1. ホーム
  2. android

[解決済み] メール送信インテント

2022-03-15 17:58:43

質問

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");

startActivity(Intent.createChooser(intent, "Send Email"));

上記のコードでは、Bluetooth、Google Docs、Yahoo Mail、Gmail、Orkut、Skypeなどのアプリを表示するダイアログが開きます。

実は、これらのリスト・オプションをフィルタリングしたいのです。例えば、GmailやYahoo Mailのようなメール関連のアプリだけを表示したいのです。どうすればいいのでしょうか?

Android Market」アプリで、そのような例を見たことがあります。

  1. Android Marketアプリを開く
  2. 開発者がメールアドレスを指定しているアプリケーションを開いてください。(もしそのようなアプリが見つからない場合は、私のアプリを開いてください:- market://details?id=com.becomputer06.vehicle.diary.free , または 'Vehicle Diary' で検索)
  3. DEVELOPER'までスクロールダウンしてください。
  4. メール送信」をクリック

ダイアログには、Gmail、Yahooメールなどのメールアプリのみが表示されます。BluetoothやOrkutなどは表示されません。どのようなコードがこのようなダイアログを生成するのでしょうか?

解決方法を教えてください。

intent.setTypeを以下のように変更すると、次のようになります。

intent.setType("text/plain");

使用方法 android.content.Intent.ACTION_SENDTO を使うと、facebookや他のアプリを使わずに、メールクライアントのリストだけを取得することができます。Eメールクライアントだけです。 例

new Intent(Intent.ACTION_SENDTO);

メールアプリに直接手を出すのはお勧めしません。ユーザーが好きなメールアプリを選べるようにしましょう。束縛してはいけません。

ACTION_SENDTOを使用する場合、インテントに件名とテキストを追加するためにputExtraは機能しません。件名と本文を追加するには、Uriを使用してください。

EDITです。 を使用することができます。 message/rfc822 の代わりに "text/plain" をMIMEタイプとして指定します。しかし、これは「メールクライアントだけを提供する」という意味ではなく、「message/rfc822データをサポートするものなら何でも提供する」という意味です。メールクライアントでないアプリケーションも含まれる可能性があります。

message/rfc822 の MIME タイプをサポートしています。 .mhtml, .mht, .mime