Intent.EXTRA_EMAILがToフィールドに入力されていない


87

私は使用しようとしています アプリケーションからメールを送信しますが、メールの[宛先]フィールドには入力されません。件名やテキストを入力するコードを追加すると、問題なく動作します。[宛先]フィールドだけでは入力されません。

タイプを「text / plain」と「text / html」に変更してみましたが、同じ問題が発生します。誰か助けてくれますか?

public void Email(){

    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    String recipient = getString(R.string.IntegralEmailAddress);
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL  , recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); }

使用しようとしているメールクライアントはGmailです

回答:


213

私はあなたが通り過ぎrecipientていないと思いますarray of string

それはのようでなければなりません

emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "someone@gmail.com" });

19
Android ...なぜあなたはとても哀れなのですか?
Bugs Happen

4
ハハハ、あなたは私に+1ミリオン@BugsHappenを笑わせました..理由:オープンソースですが、ドキュメントは100%満足のいくものではありません。デバイスメーカーはニーズに応じて修正します(ほとんどのデバイスは安価で役に立たない)。開発者は「開発者」とは読みません。 android.com」。
MKJParekh

4
また、あなたがされていることを確認しないでやってintent.putExtra(Intent.EXTRA_EMAIL, list.toArray()) 、それWILL NOT WORK list.toArray()が生成するので、オブジェクト[]とない文字列[]
nikib3ro

@ kape123これは機能しますintent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Abtin Gramian 2017年

4

これを使って

public void Email(){
    // use this to declare your 'recipient' string and get your email recipient from your string xml file
    Resources res = getResources();
    String recipient = getString(R.string.IntegralEmailAddress);
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    emailIntent.putExtra(Intent.EXTRA_EMAIL, recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); 

``}

これは動作します:)
これは、Intent.Extra_Emailに関する
すべての「To」受信者の電子メールアドレスの文字列配列に関するAndroidドキュメントの説明です。
したがって、文字列を適切にフィードする必要があります。詳細はこちら
http://developer.android.com/guide/components/intents-common.html#Email とこちらhttp://developer.android.com/guide/topics/resourcesをご覧ください。 /string-resource.html または、ACTION_SENDTOアクションを使用して、「mailto:」データスキームを含めます。例えば:

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);
}

2
private void callSendMeMail() {
    Intent Email = new Intent(Intent.ACTION_SEND);
    Email.setType("text/email");
    Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@gmail.com" });
    Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
    startActivity(Intent.createChooser(Email, "Send mail to Developer:"));
}

このアクションを実行できるアプリはありません。
アブナエム

2

コトリン-Android

fun sendMail(
        activity: Activity,
        emailIds: Array<String>,
        subject: String,
        textMessage: String
    ) {


        val emailIntent = Intent(Intent.ACTION_SEND)
        emailIntent.type = "text/plain"
        emailIntent.putExtra(Intent.EXTRA_EMAIL, emailIds)
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
        emailIntent.putExtra(Intent.EXTRA_TEXT, textMessage)
        emailIntent.setType("message/rfc822")
        try {
            activity.startActivity(
                Intent.createChooser(
                    emailIntent,
                    "Send email using..."
                )
            )
        } catch (ex: ActivityNotFoundException) {
            Toast.makeText(
                activity,
                "No email clients installed.",
                Toast.LENGTH_SHORT
            ).show()
        }
    }

また、[ val emailIntent = Intent(Intent.ACTION_SENDTO)]を使用してダイレクトメールクライアントを呼び出すこともできます

//argument of function
val subject = "subject of you email"
val eMailMessageTxt = "Add Message here"

val eMailId1 = "emailId1@gmail.com"
val eMailId2 = "emailId2@gmail.com"
val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2)

//Calling function
sendMail(this, eMailIds, subject, eMailMessageTxt)

このコードスニペットがkotlin開発者に役立つことを願っています。


1



いくつか:1-アクション定数変数をACTION_SENDTOとして設定する必要があります。
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);

2-メールのみで開く場合は、setData()メソッドを使用します。intentEmail.setData(Uri.parse("mailto:"));それ以外の場合は、デバイスに存在する他のアプリによってテキスト、画像、音声ファイルとして開くように求められます。

3-電子メールID文字列を単なる文字列としてでなく、配列オブジェクトとして渡す必要があります。文字列は:"name@email.com"です。文字列の配列オブジェクトは次のとおりです:new String [] {"email1"、 "email2"、 "more_email"}

intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.