不要导航到 WebView 中的其他页面,禁用链接和引用

新手上路,请多包涵

我在 Android 中有一个 webView,我在其中打开了一个 html 网页。但它充满了链接和图像,当我单击其中一个时,它会加载到我的网络视图中。我想禁用此行为,因此如果我单击链接,请不要加载它。我试过这个 解决方案 并为自己做了一些编辑,但没有奏效。我的 webviewclient 代码:

 private boolean loaded = false;

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    if(loaded == false){
        view.loadUrl(url);
        loaded = true;
        return true;
    }else{
        return false;
    }

}

我的 webview 实现和设置。

 WebView wv = (WebView) findViewById(R.id.recipeWv);
    ourWebViewClient webViewClient = new ourWebViewClient();
    webViewClient.shouldOverrideUrlLoading(wv, URLsave);
    wv.setWebViewClient(webViewClient);
    wv.setFocusableInTouchMode(false);
    wv.setFocusable(false);
    wv.setClickable(false);
    WebSettings settings = wv.getSettings();
    settings.setDefaultTextEncodingName("utf-8");

    settings.setLoadWithOverviewMode(true);
    settings.setBuiltInZoomControls(true);

示例:如果用户在我的 webview 中打开 StackOverflow 主页并单击其中一个链接(如“问题”),则 webview 应保留在 StackOverflow 主页上。

原文由 Dandelion 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 510
2 个回答

您应该将您当前的 url 保存在一个类变量中,并检查它是否与加载的 url 相同。当用户单击链接时,调用 shouldOverrideUrlLoading 并检查网站。是这样的:

 private String currentUrl;

public ourWebViewClient(String currentUrl) {
    this.currentUrl = currentUrl;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.equals(currentUrl)) {
        view.loadUrl(url);
    }
    return true;
}

重要提示: 不要忘记将 WebViewClient 设置为你的 WebView

 ourWebViewClient webViewClient = new ourWebViewClient(urlToLoad);
wv.setWebViewClient(webViewClient);

原文由 Slenkra 发布,翻译遵循 CC BY-SA 3.0 许可协议

实现一个 WebViewClient 并从 WebView Client 的这个方法返回 true

 webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return true;
    }
});

原文由 Tarun Deep Attri 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题