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 アプリケーションでそのような例を見たことがあります。
- Androidマーケットアプリを開く
- 開発者が自分のメール アドレスを指定しているアプリケーションを開きます。(そのようなアプリが見つからない場合は、私のアプリを開いてください:- market://details?id=com.becomputer06.vehicle.diary.free、または「Vehicle Diary」で検索してください)
- 「開発者」までスクロールします
- 「メールを送信」をクリックします
ダイアログには、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