【问题标题】:WebViewClient.shouldOverrideUrlLoading giving invalid urlWebViewClient.shouldOverrideUrlLoading 给出无效的 url
【发布时间】:2015-04-08 06:30:23
【问题描述】:

我将WebView的内容设置为;

String displayBodyText = "<a href="scheme:/user_abd/data?q=from%3A%22ammar%40mydomain.com%22#title=%40Ammar%20">Ammar</a>"
webView.loadData(displayBodyText , "text/html", "utf-8");

并将WebViewClient设置为;

linkDetailWebView.setWebViewClient(new WebViewClient() {
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                            Log.d("TAG", url);
                            return true;
                        }
                    });

当点击数据中的链接时,我得到的是scheme:/user_abd/data?q=from: 而不是scheme:/user_abd/data?q=from%3A%22ammar%40mydomain.com%22#title=%40Ammar%20

我无法得到WebView 的这种行为。

【问题讨论】:

    标签: android webview android-webview android-websettings


    【解决方案1】:

    试试这个代码,我检查过它对我有用

    String displayBodyText = "<a href=\"scheme:/user_abd/data?q=from:&#34;ammar@mydomain.com&#34;#title=@Ammar\">Ammar</a>";
    web_view.loadData(displayBodyText , "text/html", "utf-8");
    

    Webview 客户端

    web_view.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                String m_url = URLDecoder.decode(url);
                Log.e("TAG",m_url);
    
                return true;
            }
    });
    

    【讨论】:

    • 不工作。在这种情况下,返回的 url 是scheme:/user_abd/data?q=from:/%22 似乎有些问题。
    • 现在返回的是 scheme:/user_abd/data?q==from:\\
    • 也为我工作,谢谢!
    【解决方案2】:

    你必须从你的字符串中转义你的无效字符:

    String displayBodyText = "<a href=\"scheme:/user_abd/data?q=from%3A%22ammar%40mydomain.com%22#title=%40Ammar%20\">Ammar</a>";
    

    你不能在字符串中使用双引号而不转义它们:Escape double quotes in Java

    【讨论】:

    • 这个字符串中有哪些无效字符?双引号已经用 '%22' 编码。
    • href 属性上的双引号无效:href="..."。把你的字符串和我的比较一下,你就会明白了。
    • 哦,是的。但这是错字。实际上我的字符串被转义了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2022-10-26
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2015-03-08
    • 2012-07-06
    相关资源
    最近更新 更多