gpt4 book ai didi

java - 从 webview 打开原生 map

转载 作者:行者123 更新时间:2023-12-02 09:10:19 24 4
gpt4 key购买 nike

我有一个带有 WebView 的应用程序。 webview 链接到一个移动网页,其中所有链接都可以正常工作。当我单击此 WebView 中的链接时,该链接会在 WebView 内的谷歌地图中打开。相反,我想要打开 native 谷歌地图应用程序的链接。谁能告诉我该怎么做?

我有这个代码,我需要将其插入到我的代码中

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("geo:")) {
Uri gmmIntentUri = Uri.parse(url);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
return true;
}
view.loadUrl(url);
return true;
}

这是我的代码:

package com.company.test2;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WebView webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("www.google.com");
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
}
}

最佳答案

要从javascript调用android方法,您需要创建Javascriptinterface类和注释方法,如documentation中的@JavascriptInterface|

public class WebAppInterface {
Context mContext;

/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}

/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}

并将其绑定(bind)到webview,如

webView.addJavascriptInterface(new WebAppInterface(this), "Android");

并且从 javascript 中你可以这样调用它

function showtoastfromsite(){
Android.showToast("hello from website");
}

关于java - 从 webview 打开原生 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59476929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com