3

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

4

2 回答 2

0

在您的按钮 onclick 中使用它:

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

开始活动(浏览器意图);

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

于 2012-10-08T20:23:46.447 回答
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。

于 2012-10-09T16:10:23.097 回答