5

アプリからメールを送信したい。そこで、次のコードを使用しました。

String uriText = "abcd@gmail.com" + "?subject=" + URLEncoder.encode("Subject") + "&body=" + URLEncoder.encode("some text here");
Uri uri = Uri.parse(uriText);
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send Email"));

GmailとEメールの両方のアプリケーションを設定しました。Nexus S(JellyBean)とHTC T-Mobile G2(GingerBread)でテストしました。どちらも「このアクションを実行できるアプリはありません」と表示されます。

誰かがここで何が悪いのか考えていますか?

4

4 に答える 4

12

を使用する場合は、またはスキームを使用する必要がありますACTION_SENDTO。だから、試してみてください。Urimailto:smsto:mailto:abcd@gmail.com

于 2012-12-21T17:46:37.163 に答える
8

メールの送信に使用している場合はIntent.setData 、コードを次のように変更します。

String uriText = "mailto:someone@example.com" +
                 "?subject=" + URLEncoder.encode("Subject") + 
                 "&body=" + URLEncoder.encode("some text here");
Uri uri = Uri.parse(uriText);
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send Email"));
于 2012-12-21T17:50:29.153 に答える
1

Uriは「mailto」である必要があります

 Intent intent = new Intent(Intent.ACTION_SENDTO);  
 intent.setData(Uri.parse("mailto:"));  
 intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc@gmail.com"});  
 intent.putExtra(Intent.EXTRA_SUBJECT,"Order summary of Coffee");
 intent.putExtra(Intent.EXTRA_TEXT,BodyOfEmail);

 if(intent.resolveActivity(getPackageManager())!=null) {
            startActivity(intent);
        }
于 2020-07-15T19:56:30.477 に答える
-1

次のコードは私のために機能し、はるかに信頼性と柔軟性があります。また、Kotlinで書かれています:)

fun sendEmail(context: Context, mailTo: String? = null, subject: String? = null, bodyText: String? = null) {
    val emailIntent = Intent(Intent.ACTION_SENDTO)
    val uri = Uri.parse("mailto:${mailTo ?: ""}").buildUpon() // "mailto:" (even if empty) is required to open email composers
    subject?.let { uri.appendQueryParameter("subject", it) }
    bodyText?.let { uri.appendQueryParameter("body", it) }
    emailIntent.data = uri.build()
    try {
        context.startActivity(emailIntent)
    } catch (e: ActivityNotFoundException) {
        // Handle error properly
    }
}
于 2018-11-28T21:21:27.383 に答える