有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

webview中的javascript超链接

我在安卓中制作了一个webview,它工作得非常好,但我想要的是,用户可以在webview中浏览网站,但当用户单击webview中的超链接时,我希望它在chrome中打开链接。。这是我的webview代码

public class MainActivity extends Activity {
    WebView wb;
    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    }
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wb=(WebView)findViewById(R.id.webView1);
        wb.getSettings().setJavaScriptEnabled(true);
        wb.getSettings().setLoadWithOverviewMode(true);
        wb.getSettings().setUseWideViewPort(true);
        wb.getSettings().setBuiltInZoomControls(true);
        wb.getSettings().setPluginState(WebSettings.PluginState.ON);

        wb.setWebViewClient(new HelloWebViewClient());
        wb.loadUrl("https://example.com");
    }
}

我网站上的一个链接如下,但我不希望这个链接在我的webview中打开,我希望它在chrome上打开

<a href="https://google.com" class="button" >Google</a>

共 (1) 个答案

  1. # 1 楼答案

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // check url
        if(url.contains("google.com")) {
            // below line will open default app with url
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            // return true when url was handled somehow and doesn't need to be loaded
            return true;
        }
        return false; // not handled manually urls, open them in WebView
    }
    

    startActivity属于ContextActicity扩展了它),可以直接使用,因为你的HelloWebViewClient放在里面,但如果不是,那么你可以使用WebViewsContext

    view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));