メールを送信する 質問する

メールを送信する 質問する
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 メールなどのメール関連のアプリだけを表示したいのですが、どうすればいいでしょうか?

Android Market アプリケーションでそのような例を見たことがあります。

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

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

ベストアンサー1

アップデート

公式アプローチ:

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

参照リンク

古い答え

受け入れられた回答は 4.1.2 では機能しません。これはすべてのプラットフォームで機能するはずです:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","[email protected]", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");
startActivity(Intent.createChooser(emailIntent, "Send email..."));

更新:マーク4.3 では、これを機能させるには、電子メール アドレスに文字列ではなく文字列配列を渡す必要があるようです。もう 1 行追加する必要があるかもしれません。

intent.putExtra(Intent.EXTRA_EMAIL, addresses); // String[] addresses

おすすめ記事