我有一个问题,我正在尝试为我的网站创建一个应用程序,我正在使用android webview这样做,但因为我的网站有外部链接(广告,反向链接等),当用户点击这些链接时,webview打开链接,我的应用程序就像一个浏览器,我知道这是什么webview,但我希望它只打开我的网站的链接
我找到了shouldOverrideUrlLoading方法并且我拦截了网址,如果网址与我的网站前缀不同,我返回true,但是当我点击和外部链接时,webview全部变为白色,并且当我点击时,想要webview保持不变外部链接
这是我的代码
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
urlData = url;
if (target_url_prefix.equals(host)) {
if (mWebviewPop != null) {
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop = null;
}
return false;
}
if(!url.contains(getString(R.string.target_url))) {
Log.d("intercept External URL", "true");
return true;
}
}
2 回答
在这两种情况下,您都已经消耗了该事件尝试类似下面的东西 .
或者,如果您想阻止所有其他链接,那么您可以像下面一样使用它 .
请记住,所有其他链接都不起作用,因此这可能会给您的应用带来不好的印象 . 所以我建议你应该用浏览器意图打开其他链接 . 如下 .
NOTE : - 这是
shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
的实现,适用于API 21 . 因此,您也应该以相同的方式覆盖shouldOverrideUrlLoading(WebView view, String url)
以用于以前的版本 .您不必编写
shouldOverrideUrlLoading
方法 . 仅在onCreate()
方法中加载网址 .检查此代码 .
MainActivity.this .