2016-11-22 3 views
0

Ich arbeite an Android Webview einer Website. Ich habe enthalten mailto für Kontakt und E-Mail an einen Freund. Die Code-Schnipsel an Web-Seite:MailTo funktioniert nicht in Android WebView

Für Kontakt: <a href="mailto:[email protected]">[email protected]</a>

Für E-Mail an einen Freund: <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>

ich den folgenden Code-Schnipsel für die Android-Seite bei shouldOverrideUrlLoading Methode:

@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; 
    } 

Dies funktioniert gut mit Kontakt. Aber es funktioniert nicht mit E-Mail an einen Freund. Es ist leer in Subject und Composed email Feld, aber Feld To enthalten /product-detail/105/, die leer sein müssen. Wenn ich die Website im Browser in Mobile öffne, funktioniert es gut. Also, was sollte ich in obigem Code tun müssen, damit Webview dieses Problem behandelt? Was kann getan werden, um dies zu lösen?

+0

Hast du dieses 'mail.setType versucht ("message/rfc822");' .Wenn das nicht versuchen, statt 'mail.setType (" application/octet-stream ");' –

+0

Ich benutze dies bereits: 'mail.setType (" application/octet-stream ");'. Siehe im obigen Ausschnitt. Wie handhabe ich mehrere 'mailto'? –

+0

Ich schlug vor, Sie versuchen, diese 'mail.setType (" message/rfc822 ");' –

Antwort

1

löse ich mein Problem dies durch den Einsatz:

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; 
     } 
    } 
Verwandte Themen