Android WebChrome 客户端 Promts/Opens Link 在浏览器而不是 WebView

Posted

技术标签:

【中文标题】Android WebChrome 客户端 Promts/Opens Link 在浏览器而不是 WebView【英文标题】:Android WebChrome Client Promts/Opens Link in browser rather than WebView 【发布时间】:2019-02-05 20:11:15 【问题描述】:

在启动活动时,webview 应该加载指定的 url,但在模拟器中它会启动本机浏览器,在物理设备上它会提示在浏览器中打开 url。

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_webview);
    WebView wv = findViewById(R.id.my_webview);
    WebSettings webSettings = wv.getSettings();
    wv.setWebChromeClient(new WebChromeClient());
    webSettings.setjavascriptEnabled(true);
    wv.loadUrl("http://google.com");

尝试获取它,以便 webview 既不会在本机浏览器中启动,也不会提示用户在浏览器中打开。如果单击,所有嵌入的链接也应保留在 web 视图中。

【问题讨论】:

【参考方案1】:

我认为你必须实现shouldOverrideUrlLoading() 方法:

shouldOverrideUrlLoading(WebView view, String url) 
    view.loadUrl(url);
    return false;

【讨论】:

【参考方案2】:

如果您不将 WebViewClient 添加到 WebView 实例,则会发生这种情况。为了在同一个 WebView 中启用导航,您需要将 WebViewClient 设置为您的 WebView 实例 wv。添加以下行:

 wv.setWebViewClient(new WebViewClient());

【讨论】:

所以我添加了该行并保留该行 wv.setWebChromeClient(new WebChromeClient()); 是的。设置两个客户端。 我假设这解决了您的问题。您能否将答案标记为已接受?如果还没有,请告诉我。

以上是关于Android WebChrome 客户端 Promts/Opens Link 在浏览器而不是 WebView的主要内容,如果未能解决你的问题,请参考以下文章

Android中的consumer-rules.pro和proguard-rules.pro有啥区别?

[Android Pro] AES加密

[Android Pro] Android TypedValue.applyDimension()的用法

[Android Pro] AAR and JAR

《Pro Android Graphics》读书笔记之第四节

[Android Pro] 常用的android工具类和库