3

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

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

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 ではなく他の組み込みの電子メール アプリケーションまたはサード パーティの電子メール アプリケーションを使用している可能性があるという点で柔軟性がありません。この場合、ユーザーが電子メールを読むために起動するアプリを決定できるように、セレクターを表示するインテントを探しています。

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

4

3 に答える 3

5

これを達成するために、何らかの方法で mailto URL を使用できますか? --編集-- 次のコード サンプルを使用してこれを達成できました。

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:"));
于 2011-01-23T04:41:50.140 に答える
1

もう 1 つのアプローチは、Intent.createChooser(); です。ユーザーが適切なアプリケーションを選択できるようにします。

ところで、リストには電子メールアプリケーションだけでなく、

于 2010-06-30T10:09:29.023 に答える
0

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

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

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

于 2010-06-30T09:09:07.623 に答える