Android中的WebView会触发标准浏览器

时间:2013-04-02 14:55:19

标签: android webview

我在Android中创建了一个用于显示网站的活动。我用了这段代码:

private WebView mWebview; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    mWebview = new WebView(this);
    mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
    mWebview.loadUrl("http://blablabla");
    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeAllCookie();
    setContentView(mWebview);

但是当我将它用于例如www.bild.de或其移动版本wap.bild.de时,它会触发标准浏览器并从我的应用程序中退出。如果我点击该网站的链接,也是如此。我不希望这样。我究竟做错了什么?感谢。

2 个答案:

答案 0 :(得分:2)

你并没有真正做任何事情"错误"。默认情况下,链接点击和重定向会显示用户选择的Web浏览器,而不是将其保留在WebView内。

要解决此问题,您需要通过WebViewClientWebView添加setWebViewClient()实施。您的WebViewClient子类需要覆盖shouldOverrideUrlLoading()来处理您希望保留在WebView中的任何网址:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
  if (/* url is one you want to keep in the WebView */) {
    view.loadUrl(url);

    return(true);
  }

  return(false);
}

答案 1 :(得分:1)

我刚刚在手机上的测试项目中运行了你的代码,它在加载第一页时似乎运行正常。它首次加载了wap.bild.de而没有任何问题。

但是,我确实遇到了点击链接时启动默认浏览器的问题。要解决此问题,只需添加以下行:

mWebview.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url); // open link in the same web view.
            return true;
        }
    });