2013-12-14 22 views
5

次のコードを使用する必要があります。すべてのhttp URLがWebview内で開く必要があるため、 "tel:"リンクがダイアラーのように開き、メールクライアントの場合と同様に "mailto:"リンクが開きます。Webview "mailto:"リンクと "tel:"リンクはIntent.ACTION_VIEWを使用して動作しますが、ユニークなSubject、つまり "mailto:"リンクを追加するには

しかし、私の問題は、 "mailto:"リンクの件名を、あらかじめ定義された件名ではなく、別のものに変更する方法です。私は2つの別個の意図があるべきだと推測しています。 "tel:"リンクの場合は1です。& 1 "mailto:"リンクの場合1。以下のshouldOverrideUrlLoadingメソッドにコードをどのように記述するのか分かりません。あるいは、私が必要とするものに間違った方法を使っているかもしれません。

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

      // Otherwise allow the OS to handle it 
      Intent intent = new Intent(Intent.ACTION_VIEW, 
        Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 

私は私自身の主題得ることができた「のmailto:」という意図を持って作業していて、「TEL:」せずにコードに含まれるリンク。だから私はどのようにして "mailto:"リンクで自分の主題を使うことができますか?

ご意見やご提案をいただければ幸いです。

答えて

8

は、これは私のソリューションです。私はそれが私が持っていた同じ問題を持つ他の誰にも役立つことを願っています[OK]を

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

      // Otherwise allow the OS to handle it 
      else if (url.startsWith("tel:")) { 
       Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
       startActivity(tel); 
       return true; 
      } 
      else if (url.startsWith("mailto:")) { 
       String body = "Enter your Question, Enquiry or Feedback below:\n\n"; 
       Intent mail = new Intent(Intent.ACTION_SEND); 
       mail.setType("application/octet-stream"); 
       mail.putExtra(Intent.EXTRA_EMAIL, new String[]{"email address"}); 
       mail.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
       mail.putExtra(Intent.EXTRA_TEXT, body); 
       startActivity(mail); 
       return true; 
       } 
      return true; 
     } 
0

mailtoを検出すると、「?subject = custom」を追加してみます。このような何かが私は推測:それは私の作品&

if (url.startsWith("mailto:")) { 
    Uri mailWithSubject = Uri.parse(url). 
      buildUpon().appendQueryParameter("subject", "Hello World!").build(); 
    Intent intent = new Intent(Intent.ACTION_VIEW, mailWithSubject); 
    ... 
} 
+0

私はちょっとあなたのロジックに従うが、どのように私は、 "TEL:" のコードを追加行うリンクaswell。私が言ったように、私は "mailto:"リンクを私が望むように解決することができますが、コードに "tel:"リンクはありません。もっと重要なのは、件名の変更のための "mailto:"リンク内のわずかな編集で、コード内の両方のリンクをどのように使用すればよいですか? – Loui

+0

tel:リンクで何をしますか? – ksasq

+0

tel:ダイヤラを起動するためのリンク。私はmailto:とtel:リンクの両方を行うことができますが、一緒にはできません。だから私は自分の件名を追加し、同様の方法でダイヤラを起動するtel:linkを持っているmailto:リンクを編集するには? – Loui

1
@Override 
     public boolean shouldOverrideUrlLoading(WebView wv, String url) { 


      if(url.startsWith(TEL_PREFIX)) { 
       Intent intent = new Intent(Intent.ACTION_DIAL); 
       intent.setData(Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } 
      if (url.startsWith("mailto:")) { 


       String body = "Enter your Question, Enquiry or Feedback below:\n\n"; 


       Intent email = new Intent(Intent.ACTION_SEND); 
       email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
       email.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
       email.putExtra(Intent.EXTRA_TEXT, body); 
       //need this to prompts email client only 
       email.setType("message/rfc822"); 
       startActivity(Intent.createChooser(email, "Choose an Email client :")); 


       return true; 
       } 
      return false; 
     } 
    }); 
+0

me.aboveの答えがmail.setType( "application/octet-stream")のためにクラッシュしていました。私はそれを修正しました。 – user1299132

関連する問題