0

アプリにボタンがあり、電話のメールアプリを開き、文字列に保存した電子メールアドレスを追加することになっています。私はこれを使用しました:

Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "mail@mail.com"});
startActivity(email); 

しかし、それは私のアプリをクラッシュさせます。助けてください。

以下の Lionel Port の回答を読んだ後、コードを次のように変更しました。

 Intent email = new Intent(Intent.ACTION_SEND);
 email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "mail@mail.com"});
 startActivity(Intent.createChooser(email, "Send mail..."));

これは私のアプリをクラッシュさせていませんが、createChooser が表示されると、電話にメールアプリと gmail があっても、このアクションを処理するアプリが電話にないと表示されます。

4

2 に答える 2

2

これを行うには 2 つの方法があります。

1- ACTION_SEND

Intent intent = new Intent(Intent.ACTION_SEND);  

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"mail@mail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "email subject"); // optional
intent.putExtra(Intent.EXTRA_TEXT, "email body"); // optional
intent.setType("message/rfc822"); // useful define which kind of app to perform the action 

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

2- ACTION_SENDTO

Uri uri = Uri.parse("mailto:mail@mail.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

intent.putExtra(Intent.EXTRA_SUBJECT, "email subject"); // optional
intent.putExtra(Intent.EXTRA_TEXT, "email body"); // optional

startActivity(intent);

最初のソリューションでは、タイプ形式「message/rfc822」を受け入れるすべてのアプリでコンテンツを送信する選択肢が提供されます。

2 つ目は、デバイスに存在するメール アプリ (ネイティブ メール、Gmail、またはインストールされている場合はその他) でのみコンテンツを送信する選択肢を提供します。

私は2番目の解決策を好みます。

于 2013-07-31T23:36:32.953 に答える