【问题标题】:How to read clicked link's url on WebView without going new url?如何在不使用新 url 的情况下在 WebView 上读取点击链接的 url?
【发布时间】:2020-02-04 13:43:35
【问题描述】:

我有一个Webiew。我想阅读点击链接的网址,但Webiew 不能转到此网址。 WebView 必须保持在同一页面。

示例:用户点击https://stackoverflow.com/questions 按钮,应用阅读此链接。但是 WebView 必须仍然保持在 "https://stackoverflow.com/" 上而不刷新。 我可以阅读点击链接的 URL,但我无法停止 WebView,它会转到新的 url。

【问题讨论】:

  • 使用 shouldOverrideUrlLoading() 覆盖方法

标签: java android webview android-webview


【解决方案1】:

正如@Sudheesh 建议您应该扩展WebView 提供shouldOverrideUrlLoading 的新实现。 和Web View onclick event for a specific link in that webview是一样的情况。

我认为您应该避免调用super.shouldOverrideUrlLoading(view, url); 以防止默认行为。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView wv = (WebView) findViewById(R.id.myWebView);
        wv.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if(isURLMatching(url)) {
                    openNextActivity();
                    return true;
                }
                //return super.shouldOverrideUrlLoading(view, url);
                return false;
            }
        });
    }

    protected boolean isURLMatching(String url) {
            // some logic to match the URL would be safe to have here
        return true;
    }

    protected void openNextActivity() {
        Intent intent = new Intent(this, MyNextActivity.class);
        startActivity(intent);
    }

【讨论】:

  • 其他类型的链接可以吗?
  • 遗漏了什么?
  • 我认为缺少的是加载时间。我改变了一些动作时机。
  • 请在评论中添加缺少的部分,我将为大家完成我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2016-06-04
相关资源
最近更新 更多