2015-04-24 32 views
3

當我點擊肚裏至mailto鏈接:[email protected]我得到這個錯誤:Android的web視圖ERR_UNKNOWN_URL_SCHEME錯誤

net: ERR_UNKNOWN_URL_SCHEME

我嘗試添加一個if(url.startsWith("mailto:"))條件,但它不工作。

這是我MyWebViewClient方法:

public class MyWebViewClient extends WebViewClient { 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      view.setVisibility(View.VISIBLE); 
      final Animation fade = new AlphaAnimation(0.0f, 1.0f); 
      fade.setDuration(200); 
      view.startAnimation(fade); 
      view.setVisibility(View.VISIBLE); 

     } 

    } 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.startsWith("mailto:")){ 
      Intent intent = null; 
      try { 
       intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); 
      } catch (URISyntaxException e) { 
       e.printStackTrace(); 
      } 
      view.getContext().startActivity(intent); 
     } 
     else if (url.endsWith(".mp3")) { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.parse(url), "audio/*"); 
      startActivity(intent); 

     } else if (url.endsWith(".mp4") || url.endsWith(".3gp")) { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.parse(url), "video/*"); 
      startActivity(intent); 
     } 
     else { 
      return false; 
     } 
     view.reload(); 
     return true; 
    } 

,這是我怎麼添加功能到我的Web視圖loadUrl前:

... 
mWebview.setWebViewClient(new MyWebViewClient()); 
... 

回答

5

試試這個

if(url.startsWith("mailto:")){ 
     MailTo mt = MailTo.parse(url); 
     Intent i = new Intent(Intent.ACTION_SEND); 
     i.setType("text/plain"); 
     i.putExtra(Intent.EXTRA_EMAIL, new String[]{mt.getTo()}); 
     i.putExtra(Intent.EXTRA_SUBJECT, mt.getSubject()); 
     i.putExtra(Intent.EXTRA_CC, mt.getCc()); 
     i.putExtra(Intent.EXTRA_TEXT, mt.getBody()); 
     mContext.startActivity(i); 
     view.reload(); 
     return true; 
    } 
+0

沒有什麼變化時,我刪除它 – Dauezevy

+2

這很好,但如果你想要目標電子郵件應用程序的目的只使用'intent.setType(「message/rfc822」);'。另請參閱http://stackoverflow.com/questions/4788461/handling-links-in-a-webview – sulai