强制Android WebView在新浏览器中打开

时间:2012-10-08 20:18:23

标签: android android-webview

Android已更改其打开点击的默认方法,现在它会在网页浏览中打开它们而不是新浏览器。这已经被问到here但是我尝试过的每件事都会打开WebView中的链接。有人可以向我提供有关捕获点击的详细信息,因此我强制link to open in the default browser

2 个答案:

答案 0 :(得分:0)

在你的按钮上点击:

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

startActivity(browserIntent);

要解析它,首先需要 http://

答案 1 :(得分:0)

最后工作不知道这是否是最佳方式,但它有效。我将以下代码放在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。