電子メールアプリを起動する意図を作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3147543

  •  01-10-2019
  •  | 
  •  

質問

私はここや他の場所で、電子メールを送信する意図を作成することでさまざまなトピックを見つけましたが、それは非常に簡単なようです。ユーザーが持っているかもしれない電子メールクライアントを起動するだけの意図を探しています。

これが私が電子メールを送信するために見たコードです(参照のためだけに投稿された、これは私が新しいメッセージを送りたくないので私のニーズに応えない):

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message"); 
i.putExtra(Intent.EXTRA_TEXT   , "Body of the message"); 

これは、パッケージ名でGmailクライアントを具体的に起動するためにまとめたコードです。

PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.gm");
startActivity(intent);

上記のコードは機能しますが、ユーザーがGmailを使用していないのではなく、他の内蔵電子メールアプリケーションまたはサードパーティの電子メールアプリを使用している可能性があるという点では柔軟ではありません。ユーザーが電子メールを読むために起動するアプリを決定できるように、この場合、選択者を育てる意図を探しています。

誰かがこれを達成する方法を知っていますか?

役に立ちましたか?

解決

誰かがこれを達成する方法を知っていますか?

そのようなはありません Intent - 電子メールアプリケーションのマニフェストを調べることで、これを伝えることができます。

あなたができる唯一のことは、あなたがリンクしたい電子メールクライアントのリストを自分で作成し、 PackageManager 上記のコードそれぞれについて。

他のヒント

これを達成するために、MailTo URLを何らかの形で使用できますか? -edit--次のコードサンプルを使用してこれを達成することができました。

mt = MailTo.parse("mailto:yourname@gmail.com");
sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mt.getTo()});
sendIntent.putExtra(Intent.EXTRA_TEXT, "");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Enter a subject");
sendIntent.setType("message/rfc822");
startActivity(Intent.createChooser(sendIntent, "Send a Message:"));

別のアプローチは、意図です。createChooser();ユーザーに適切なアプリケーションを選択できるようにします。

ところで、リストには、電子メールアプリケーションだけではありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top