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