【问题标题】:WebView loadUrl( always starts browserWebView loadUrl( 总是启动浏览器
【发布时间】:2014-01-17 16:10:30
【问题描述】:

尝试在 WebView 中加载一个简单的网页,如下所示 总是导致浏览器随它一起启动。 我在主要活动中编写的以下代码定义 "使用权限 android:name="android.permission.INTERNET" " 在清单中。我用 catch 块验证了没有抛出异常。

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

    try {
        WebView myWebView = (WebView) findViewById(R.id.myWebView);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.loadUrl("http://www.google.com");
    } catch (Exception e) {
        Log.e("MyApp", e.getMessage());
    }
}

我无法想象有什么比我的场景更简单的了。我想因为我不做点击链接之类的事情 没有必要做这样的事情

// By default, redirects cause jump from WebView to default
// system browser. Overriding url loading allows the WebView  
// to load the redirect into this screen.
mWebView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});

您知道这里可能出什么问题吗? 在我的第一个示例中,我根本不使用 setWebViewClient(...,但在这种情况下,浏览器会打开,而不是将侧面加载到 Web 视图中。

感谢和问候 迪特

【问题讨论】:

标签: android


【解决方案1】:

通过在shouldOverrideUrlLoading() 中返回fase,您将指示WebView 忽略加载URL 并打开设备的默认浏览器。

您需要将该函数的内容替换为:

// By default, redirects cause jump from WebView to default
// system browser. Overriding url loading allows the WebView  
// to load the redirect into this screen.
mWebView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

【讨论】:

  • 在我的基本示例中,我根本不使用 setWebViewClient(... 因为没有点击任何链接。所以我想这与问题无关。应该只做webSettings.setJavaScriptEnabled(true); myWebView.loadUrl("google.com"); 就可以了?
  • 恐怕需要样板。
猜你喜欢
  • 2011-12-06
  • 2013-02-05
  • 1970-01-01
  • 2014-08-24
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多