【问题标题】:Force Android WebView to open in new browser强制 Android WebView 在新浏览器中打开
【发布时间】:2012-09-29 02:58:53
【问题描述】:

Android 更改了打开点击的默认方法,现在它在 web 视图中打开它们,而不是在新的浏览器中打开。这已经被问过here,但我尝试过的每件事都会打开 WebView 中的链接。谁能给我关于捕获点击的详细信息,以便我强制link to open in the default browser

【问题讨论】:

  • “Android 已经改变了打开点击的默认方法,现在它在 web 视图而不是新的浏览器中打开它们”——你的证据是,究竟是什么?
  • 我所知道的是,运行 Android 2.3.7 的旧手机使用相同的应用程序会在默认浏览器中打开链接,而我的新手机 4.0.4 会在 web 视图中打开链接。我不知道为什么我只知道它确实如此。

标签: android android-webview


【解决方案1】:

在您的按钮 onclick 中使用它:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));

startActivity(browserIntent);

为了解析它需要一个 http:// 在开始。

【讨论】:

  • 如果此答案帮助您将其标记为正确以帮助其他用户找到它
【解决方案2】:

最后工作不知道这是否是最好的方法,但它有效。我将以下代码放在 onCreate 中。字符串 strSiteUrl 设置为我希望 WebView 显示的页面。

/* Load WebView in memory */
WebView webv = (WebView) findViewById(R.id.webv);
webv.setWebViewClient(new WebViewClient() { 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Intent browserIntent = new Intent();
        browserIntent.setAction(Intent.ACTION_VIEW);
        browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
        browserIntent.setData(Uri.parse(url));
        startActivity(browserIntent);
        return false;
    }
}); //End webv.setVewView
/* Configure WebView */
    WebSettings webSettings = webv.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setSupportMultipleWindows(true);                
    webv.loadUrl(strSiteUrl);

当用户单击 WebView 页面中的链接时,它将打开默认浏览器并显示链接的页面。但是,在单击返回按钮后,取决于单击了哪个链接,WebView 将返回到原始页面或显示链接的页面。这不是我想要的,我只希望 WebView 显示原始页面。我不知道为什么有些链接没有正确返回,也许这些链接是重定向?所以为了解决这个问题,我使用了 onStart 调用。我通过放置使视图 webv 全局化

WebView webv;

在我的全局声明中。将 webv 分配更改为

webv = (WebView) findViewById(R.id.webv);

然后创建了下面的onStart

@Override
public void onStart() {
    super.onStart();
    String strReturnUrl = String.valueOf(webv.getUrl());
    Log.i("URL!", strReturnUrl);
    if (!strReturnUrl.contentEquals(strSiteUrl)) { 
        webv.loadUrl(strSiteUrl);
    }
}

将返回的 url 写入日志证明当按下后退按钮时,它会返回不同的 url,具体取决于单击的链接。我使用 if 语句来防止不必要地重新加载原始 url。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-30
    • 2018-02-16
    • 2017-04-02
    • 1970-01-01
    • 2014-03-12
    • 2016-12-29
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多