0

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

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 一起使用时,它会触发标准浏览器并从我的应用程序中退出。如果我点击该网站的链接,也是如此。我不想要那个。我究竟做错了什么?谢谢。

4

2 回答 2

2

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

为了解决这个问题,您需要在您的, via中添加一个WebViewClient实现。您的子类将需要覆盖以处理您想要保留在的任何 URL :WebViewsetWebViewClient()WebViewClientshouldOverrideUrlLoading()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);
}
于 2013-04-02T15:16:42.307 回答
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;
        }
    });
于 2013-04-02T15:17:07.170 回答