2015-04-08 72 views
1

我将WebView的内容设置为;WebViewClient.shouldOverrideUrlLoading给无效的网址

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

回答

0

你必须从你的字符串逃过你无效字符:

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

+0

什么是此字符串中的无效字符?双引号已经用'%22'编码。 – Ammar

+0

无效的双引号在href属性上:'href =“...”'。比较你的字符串和我的,你会看到。 –

+0

哦,是的。但这是错字。其实我的字符串是逃脱。 – Ammar

1

试试这个代码,我检查我的作品

String displayBodyText = "<a href=\"scheme:/user_abd/data?q=from:&#34;[email protected]&#34;#[email protected]\">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; 
     } 
}); 
+0

不工作。在这种情况下,返回的URL是'scheme:/ user_abd/data?q = from:/'。 '%22'似乎存在一些问题。 – Ammar

+0

更新了我的答案。 –

+0

现在它返回的方案:/ user_abd/data?q ==从:\\ – Ammar