web-dev-qa-db-ja.com

ボタンをクリックするとAndroidアプリからメールを送信

ユーザーがメールを送信してデータを共有できる機能をユーザーに提供する必要があります。以下のコードを使用しました。

    Intent email = new Intent(Android.content.Intent.ACTION_SENDTO);
    email.setType("message/rfc822");
    email.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
    email.putExtra(Intent.EXTRA_SUBJECT, subject);
    email.putExtra(Intent.EXTRA_TEXT, message);
    startActivity(Intent.createChooser(email,"Choose an Email client :"));

これは、ユーザーが選択できるように、電子メール、Gmail、Skypeを表示し、Bluetooth経由で送信します。ユーザーにSkypeを表示したくない、このリストでbluetooth経由で送信します。私は何をする必要がありますか ?私の携帯電話にはWhatsAppがありますが、これは同じことをしますが、リストにはメール、Bluetoothは表示されません(設定->ヘルプ->連絡先-> ...)。リストにはメールとGmailのみが表示されます。同じことをする必要があります。

22
Amardeepvijay

これを試して:

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","[email protected]", null));
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
startActivity(Intent.createChooser(intent, "Choose an Email client :"));

特定の受信者がいない場合-次のようにします。

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto", "", null));
37
localhost

このメソッドを使用して、呼び出す必要があるGmailのみで共有します

startActivity(getSendEmailIntent(context, email,subject, body));





public Intent getSendEmailIntent(Context context, String email,
                    String subject, String body) {
            Intent emailIntent = new Intent(Android.content.Intent.ACTION_SEND);

            try {

                // Explicitly only use Gmail to send
                emailIntent.setClassName("com.google.Android.gm",
                        "com.google.Android.gm.ComposeActivityGmail");

                emailIntent.setType("text/html");

                // Add the recipients
                if (email != null)
                    emailIntent.putExtra(Android.content.Intent.EXTRA_EMAIL,
                            new String[] { email });

                if (subject != null)
                    emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT,
                            subject);

                if (body != null)
                    emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));

                // Add the attachment by specifying a reference to our custom
                // ContentProvider
                // and the specific file of interest
                // emailIntent.putExtra(
                // Intent.EXTRA_STREAM,
                // Uri.parse("content://" + CachedFileProvider.AUTHORITY + "/"
                // + fileName));

                 return emailIntent;
    //          myContext.startActivity(emailIntent);
            } catch (Exception e) {
                emailIntent.setType("text/html");

                // Add the recipients
                if (email != null)
                    emailIntent.putExtra(Android.content.Intent.EXTRA_EMAIL,
                            new String[] { email });

                if (subject != null)
                    emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT,
                            subject);

                if (body != null)
                    emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));

    //          myContext.startActivity(Intent.createChooser(emailIntent,
    //                  "Share Via"));
                 return emailIntent;
            }
            }
0
Maulik.J