2016-11-22 24 views
0

私はWebサイトのAndroid Webviewで作業しています。私はmailtoを連絡先と友達にメールで送っています。ウェブ側のコードスニペット:連絡先についてはAndroid WebViewでMailToが動作しない

<a href="mailto:[email protected]">[email protected]</a>友人に電子メールの

@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.startsWith("http:") || url.startsWith("https:")) { 
      return false; 
     } 

     else if (url.startsWith("tel:")) { 
      Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
      startActivity(tel); 
      return true; 
     } 
     else if(url.startsWith("mailto:")) { 
      MailTo mailTo = MailTo.parse(url); 
      String emailAddress = mailTo.getTo(); 
      String subject = mailTo.getSubject(); 
      String body = mailTo.getBody(); 
      String cc = mailTo.getCc(); 
      Intent mail = new Intent(Intent.ACTION_SEND,Uri.parse(url)); 
      mail.setType("application/octet-stream"); 
      mail.putExtra(Intent.EXTRA_EMAIL, new String[]{emailAddress}); 
      mail.putExtra(Intent.EXTRA_SUBJECT, subject); 
      mail.putExtra(Intent.EXTRA_TEXT, body); 
      mail.putExtra(Intent.EXTRA_CC, cc); 
      startActivity(mail); 
      return true; 
     } 
     return false; 
    } 
<a href="mailto:?subject=Check out this product&amp;body=I found this awesome product%20http://www.example.com/product-detail/61/" title="Email to a Friend" class=""><span>Email to a Friend</span></a>

私はshouldOverrideUrlLoading方法でAndroidの側面については、以下のコードスニペットを含めます

これは連絡先と正常に動作しています。しかし、それは友達との電子メールでは機能しません。 SubjectComposed emailフィールドには空白がありますが、フィールドToには空白でなければならない/product-detail/105/が含まれています。モバイルでブラウザでウェブサイトを開くと正常に動作します。だから、私は上記のコードでこの問題を処理するwebviewのために何をする必要がありますか?これを解決するために何ができるのですか?

+0

は、あなたがこの 'mail.setType( "メッセージ/ RFC822")を試してみましたDID;' .IFはなくmail.setType 'のこれを試していない(「アプリケーション/ octet-stream ");' –

+0

私はすでにこれを使用しています: 'mail.setType(" application/octet-stream ");'。上のスニペットを参照してください。どのように私は複数の 'mailto'を扱うのですか? –

+0

この 'mail.setType(" message/rfc822 ");' –

答えて

1

が、私はこれを使って、自分の問題を解決する:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.startsWith("tel:")) { 
      Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
      startActivity(tel); 
      return true; 
     } 
     else if (url.contains("mailto:")) { 
      view.getContext().startActivity(
        new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
      return true; 

     }else {  
      view.loadUrl(url); 
      return true; 
     } 
    } 
関連する問題