我有一个WebView,我在其中加载了一个带有自定义链接的页面(比如app:// action)。我在清单文件中注册了url方案,当我点击链接时,调用我的Activity的onResume()方法并使用正确的数据,它可以正常工作。
我的问题是WebView仍然尝试加载链接,我的WebView最终显示“网页不可用”消息。我不希望这样。
如何阻止WebView加载网址?
这是我的代码:
WebView banner = ...
banner.setWebViewClient(new WebViewClient() {
@Override
public void onLoadResource(WebView view, String url) {
if (url.startsWith("app://")) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url), getContext(), Main.class);
//startActivity(i);
}
}
}
banner.loadUrl("url_to_the_banner");
答案 0 :(得分:22)
改为使用WebViewClient.shouldOverrideUrlLoading。
public boolean shouldOverrideUrlLoading(WebView view, String url){
// handle by yourself
return true;
}
更新:方法shouldOverrideUrlLoading(WebView, String)
已在API级别24中弃用。请改用shouldOverrideUrlLoading(WebView, WebResourceRequest)
。
答案 1 :(得分:6)
但是否则必须返回false,所以:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if(url.startsWith(myString){
// handle by yourself
return true;
}
// ...
return false;
}