WebViewClient.shouldOverrideUrlLoading дает неверный URL-адрес

Я устанавливаю содержимое 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.


person Ammar    schedule 08.04.2015    source источник


Ответы (2)


Попробуйте этот код, я проверил, он работает для меня

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

Клиент веб-просмотра

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;
        }
});
person Android Team    schedule 08.04.2015
comment
Не работает. В этом случае возвращается URL-адрес scheme:/user_abd/data?q=from:/. Кажется, есть какая-то проблема с %22. - person Ammar; 08.04.2015
comment
Теперь возвращается схема:/user_abd/data?q==from:\\ - person Ammar; 08.04.2015
comment
У меня тоже сработало, спасибо! - person KaKa; 18.05.2016

Вы должны избежать недопустимых символов из своей строки:

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

У вас не может быть двойных кавычек в строке без их экранирования: Избегайте двойных кавычек в Java

person Lars Nielsen    schedule 08.04.2015
comment
Какие недопустимые символы в этой строке? Двойные кавычки уже закодированы с помощью "%22". - person Ammar; 08.04.2015
comment
Недопустимые двойные кавычки находятся в атрибуте href: href="...". Сравните свою строку с моей, и вы увидите. - person Lars Nielsen; 08.04.2015
comment
О, да. Но здесь опечатка. На самом деле моя строка экранирована. - person Ammar; 08.04.2015