Bagaimana cara mengirim email dari aplikasi Android saya?

Jawaban:

978

Cara terbaik (dan termudah) adalah menggunakan Intent:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"[email protected]"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT   , "body of email");
try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

Kalau tidak, Anda harus menulis klien Anda sendiri.

Jeremy Logan
sumber
6
Dalam kode di atas, tidak ada id email pengirim. Lalu bagaimana pesan dikirim?
KIRAN KJ
38
KIRAN: Anda harus melihat bagaimana Intents bekerja untuk memahami ini. Ini pada dasarnya akan membuka aplikasi email dengan penerima, subjek, dan tubuh sudah diisi. Terserah aplikasi email untuk melakukan pengiriman.
Jeremy Logan
8
Email tidak muncul di bidang "TO" dengan memulai aktivitas. ada yang tahu?
Hamza Waqas
11
kontribusi besar dari komentar ini adalah: message / rfc822
Guilherme Oliveira
22
tambahkan ini untuk memastikan bahwa pemilih hanya menampilkan aplikasi email: Intent i = new Intent(Intent.ACTION_SENDTO); i.setType("message/rfc822"); i.setData(Uri.parse("mailto:"));
Edris
194

Gunakan .setType("message/rfc822")atau pemilih akan menunjukkan kepada Anda semua (banyak) aplikasi yang mendukung maksud pengiriman.

Jeff S
sumber
5
Bagus, ini seharusnya memiliki lebih banyak suara tbh. Anda tidak akan melihat pengujian pada emulator, tetapi ketika Anda pergi untuk mengirim "teks / polos" pada perangkat nyata itu akan memberi Anda daftar 15+ aplikasi !! jadi "message / rfc822" pasti direkomendasikan (standar email).
Blundell
7
@ Blundell hai, tapi saya tidak melihat perbedaan setelah berubah kemessage/rfc822
menggambar
2
Bisakah Anda menghapus bluetooth dari daftar? Ini juga muncul dengan tipe ini. Namun 1, trik rapi!
ingh.am
4
Disimpan bacon kami. Tidak dapat membayangkan menjelaskan kepada klien bahwa pengguna dapat men-tweet permintaan dukungan daripada mengirim email kepada mereka.
Kevin Galligan
1
+1111111 Ini layak diberi +1 tanpa batas sehingga orang lain dapat melihat ini. Saya melewatkan bagian ini dan harus berurusan dengan masalah ini untuk sementara waktu!
ChallengeAccepted
89

Saya sudah menggunakan ini sejak lama dan sepertinya bagus, tidak ada aplikasi non-email yang muncul. Hanya cara lain untuk mengirim maksud kirim email:

Intent intent = new Intent(Intent.ACTION_SENDTO); // it's not ACTION_SEND
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject of email");
intent.putExtra(Intent.EXTRA_TEXT, "Body of email");
intent.setData(Uri.parse("mailto:[email protected]")); // or just "mailto:" for blank
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this will make such that when user returns to your app, your app is displayed, instead of the email app.
startActivity(intent);
Randy Sugianto 'Yuku'
sumber
1
Tindakan yang tidak didukung: Tindakan ini saat ini tidak didukung
erdomester
4
lgor G-> plz ubah dari setType "(plain / text") ke setType ("text / plain")
sachit
2
.setType ("message / rfc822") bukan teks / polos
The Hungry Androider
1
kode ini akankah saya membuka maksud email? bagaimana saya bisa mengirim email tanpa menunjukkan niat kepada pengguna @yuku saya ingin mengirim kata sandi ke email
Erum
2
Jawaban ini cukup berpengaruh . :)
Nick Volynkin
54

Saya menggunakan sesuatu di sepanjang baris jawaban yang saat ini diterima untuk mengirim email dengan file log kesalahan biner terlampir. GMail dan K-9 mengirimkannya dengan baik dan itu juga diterima dengan baik di server email saya. Satu-satunya masalah adalah klien email pilihan saya Thunderbird yang memiliki masalah dengan membuka / menyimpan file log terlampir. Sebenarnya itu sama sekali tidak menyimpan file sama sekali tanpa mengeluh.

Saya melihat pada salah satu kode sumber email ini dan memperhatikan bahwa lampiran file log memiliki (dapat dimengerti) tipe mime. message/rfc822 . Tentu saja lampiran itu bukan email terlampir. Tapi Thunderbird tidak bisa mengatasi kesalahan kecil itu dengan anggun. Jadi itu agak mengecewakan.

Setelah sedikit meneliti dan bereksperimen saya menemukan solusi berikut:

public Intent createEmailOnlyChooserIntent(Intent source,
    CharSequence chooserTitle) {
    Stack<Intent> intents = new Stack<Intent>();
    Intent i = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",
            "[email protected]", null));
    List<ResolveInfo> activities = getPackageManager()
            .queryIntentActivities(i, 0);

    for(ResolveInfo ri : activities) {
        Intent target = new Intent(source);
        target.setPackage(ri.activityInfo.packageName);
        intents.add(target);
    }

    if(!intents.isEmpty()) {
        Intent chooserIntent = Intent.createChooser(intents.remove(0),
                chooserTitle);
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                intents.toArray(new Parcelable[intents.size()]));

        return chooserIntent;
    } else {
        return Intent.createChooser(source, chooserTitle);
    }
}

Dapat digunakan sebagai berikut:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("*/*");
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(crashLogFile));
i.putExtra(Intent.EXTRA_EMAIL, new String[] {
    ANDROID_SUPPORT_EMAIL
});
i.putExtra(Intent.EXTRA_SUBJECT, "Crash report");
i.putExtra(Intent.EXTRA_TEXT, "Some crash report details");

startActivity(createEmailOnlyChooserIntent(i, "Send via email"));

Seperti yang Anda lihat, metode createEmailOnlyChooserIntent dapat dengan mudah dimasukkan dengan maksud yang benar dan tipe mime yang benar.

Itu kemudian pergi melalui daftar kegiatan yang tersedia yang menanggapi mailtomaksud protokol ACTION_SENDTO (yang hanya aplikasi email) dan membangun pemilih berdasarkan daftar kegiatan dan niat ACTION_SEND asli dengan jenis mime yang benar.

Keuntungan lain adalah Skype tidak terdaftar lagi (yang terjadi untuk menanggapi tipe mime rfc822).

tiguchi
sumber
1
saya baru saja memasukkan cuplikan kode Anda dan berfungsi dengan baik. Sebelum ada aplikasi terdaftar seperti Google Drive, Skype dll. Tapi tidak adakah cara untuk mengirim email dari aplikasi tanpa memanggil aplikasi lain? Saya baru saja membaca artikel tentang klien email yang diposkan @Rene di atas tetapi tampaknya terlalu rumit untuk hanya mengirim email sederhana
Alex Cio
Jawaban yang sangat bagus. Saya memiliki Skype dan Google Drive yang muncul ACTION_SENDjuga dan ini bisa diselesaikan dengan indah.
darrenp
1
Solusi paling populer di atas mengembalikan Skype dan Vkontakte juga. Solusi ini lebih baik.
Denis Kutlubaev
apa itu crashLogFile? di mana itu diinisialisasi? pease sepecify
Noufal
@Noufal Ini hanyalah sisa dari basis kode saya sendiri. Ini adalah Filecontoh yang menunjuk ke file log kerusakan yang dibuat aplikasi Android saya di latar belakang jika ada pengecualian yang tidak tertangkap. Contoh itu seharusnya hanya menggambarkan cara menambahkan lampiran email. Anda juga dapat melampirkan file lain dari penyimpanan eksternal (gambar misalnya). Anda juga dapat menghapus baris itu crashLogFileuntuk mendapatkan contoh yang berfungsi.
tiguchi
37

Untuk HANYA BIARKAN EMAIL APPS untuk menyelesaikan maksud Anda, Anda perlu menentukan ACTION_SENDTO sebagai Tindakan dan mengirimkannya ke Data.

private void sendEmail(){

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
    emailIntent.setData(Uri.parse("mailto:" + "[email protected]")); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "My email's subject");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "My email's body");

    try {
        startActivity(Intent.createChooser(emailIntent, "Send email using..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(Activity.this, "No email clients installed.", Toast.LENGTH_SHORT).show();
    }

}
wildzic
sumber
23

Saya memecahkan masalah ini dengan baris kode sederhana seperti yang dijelaskan oleh dokumentasi android.

( https://developer.android.com/guide/components/intents-common.html#Email )

Yang paling penting adalah bendera: itu adalah ACTION_SENDTO, dan bukanACTION_SEND

Baris penting lainnya adalah

intent.setData(Uri.parse("mailto:")); ***// only email apps should handle this***

By the way, jika Anda mengirim yang kosong Extra, if()pada akhirnya tidak akan berfungsi dan aplikasi tidak akan meluncurkan klien email.

Menurut dokumentasi Android. Jika Anda ingin memastikan bahwa maksud Anda hanya ditangani oleh aplikasi email (dan bukan aplikasi pesan teks atau sosial lainnya), maka gunakan ACTION_SENDTOtindakan dan sertakan mailto:skema data " ". Sebagai contoh:

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);
    }
}
Pedro Varela
sumber
21

Strategi menggunakan .setType("message/rfc822")atau ACTION_SENDtampaknya juga cocok dengan aplikasi yang bukan klien email, seperti Android Beam dan Bluetooth .

Penggunaan ACTION_SENDTOdan mailto:URI tampaknya berfungsi dengan baik, dan direkomendasikan dalam dokumentasi pengembang . Namun, jika Anda melakukan ini pada emulator resmi dan tidak ada akun email yang disiapkan (atau tidak ada klien surat), Anda mendapatkan kesalahan berikut:

Tindakan yang tidak didukung

Tindakan itu saat ini tidak didukung.

Seperti yang ditunjukkan di bawah ini:

Tindakan yang tidak didukung: Tindakan itu saat ini tidak didukung.

Ternyata emulator menyelesaikan maksud untuk aktivitas yang disebut com.android.fallback.Fallback, yang menampilkan pesan di atas. Rupanya ini dengan desain.

Jika Anda ingin aplikasi Anda mengelak dari ini sehingga juga berfungsi dengan baik pada emulator resmi, Anda dapat memeriksanya sebelum mencoba mengirim email:

private void sendEmail() {
    Intent intent = new Intent(Intent.ACTION_SENDTO)
        .setData(new Uri.Builder().scheme("mailto").build())
        .putExtra(Intent.EXTRA_EMAIL, new String[]{ "John Smith <[email protected]>" })
        .putExtra(Intent.EXTRA_SUBJECT, "Email subject")
        .putExtra(Intent.EXTRA_TEXT, "Email body")
    ;

    ComponentName emailApp = intent.resolveActivity(getPackageManager());
    ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback");
    if (emailApp != null && !emailApp.equals(unsupportedAction))
        try {
            // Needed to customise the chooser dialog title since it might default to "Share with"
            // Note that the chooser will still be skipped if only one app is matched
            Intent chooser = Intent.createChooser(intent, "Send email with");
            startActivity(chooser);
            return;
        }
        catch (ActivityNotFoundException ignored) {
        }

    Toast
        .makeText(this, "Couldn't find an email app and account", Toast.LENGTH_LONG)
        .show();
}

Temukan info lebih lanjut dalam dokumentasi pengembang .

Sam
sumber
13

Mengirim email dapat dilakukan dengan Intents yang tidak memerlukan konfigurasi. Tetapi kemudian akan membutuhkan interaksi pengguna dan tata letak akan sedikit dibatasi.

Membangun dan mengirim email yang lebih kompleks tanpa interaksi pengguna memerlukan membangun klien Anda sendiri. Hal pertama adalah bahwa API Java Java untuk email tidak tersedia. Saya telah berhasil memanfaatkan perpustakaan Apache Mime4j untuk membangun email. Semua berdasarkan pada dokumen di nilvec .

Ren
sumber
6

Berikut adalah contoh kode kerja yang membuka aplikasi email di perangkat android dan diisi otomatis dengan Ke alamat dan Subjek dalam email penulisan.

protected void sendEmail() {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:[email protected]"));
    intent.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
Sridhar Nalam
sumber
Terima kasih. Dibandingkan dengan solusi @Avi Parshan, Anda menyetel email masuk setData(), dan Avi masuk putExtra(). Kedua varian ini berfungsi. Tetapi jika menghapus setDatadan menggunakan saja intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});, akan ada ActivityNotFoundException.
CoolMind
5

Saya menggunakan kode di bawah ini di aplikasi saya. Ini menunjukkan persis aplikasi klien email, seperti Gmail.

    Intent contactIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", getString(R.string.email_to), null));
    contactIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.email_subject));
    startActivity(Intent.createChooser(contactIntent, getString(R.string.email_chooser)));
lomza
sumber
5

Ini hanya akan menunjukkan kepada Anda klien email (dan juga PayPal karena alasan yang tidak diketahui)

 public void composeEmail() {

    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
    intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "Body");
    try {
        startActivity(Intent.createChooser(intent, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }
}
Avi Parshan
sumber
1
Solusi bagus! Ini menghindari banyak aplikasi yang tidak cocok (kebanyakan digunakan sebagai "Bagikan"). Jangan tambahkan di intent.type = "message/rfc822"; intent.type = "text/html";sini karena akan menyebabkan pengecualian.
CoolMind
3

Beginilah cara saya melakukannya. Bagus dan sederhana.

String emailUrl = "mailto:[email protected]?subject=Subject Text&body=Body Text";
        Intent request = new Intent(Intent.ACTION_VIEW);
        request.setData(Uri.parse(emailUrl));
        startActivity(request);
Pecinta anjing
sumber
3

Fungsi ini terlebih dahulu mengarahkan maksud gmail untuk mengirim email, jika gmail tidak ditemukan maka promosikan pemilih maksud. Saya menggunakan fungsi ini di banyak aplikasi komersial dan berfungsi dengan baik. Semoga ini akan membantu Anda:

public static void sentEmail(Context mContext, String[] addresses, String subject, String body) {

    try {
        Intent sendIntentGmail = new Intent(Intent.ACTION_VIEW);
        sendIntentGmail.setType("plain/text");
        sendIntentGmail.setData(Uri.parse(TextUtils.join(",", addresses)));
        sendIntentGmail.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
        sendIntentGmail.putExtra(Intent.EXTRA_EMAIL, addresses);
        if (subject != null) sendIntentGmail.putExtra(Intent.EXTRA_SUBJECT, subject);
        if (body != null) sendIntentGmail.putExtra(Intent.EXTRA_TEXT, body);
        mContext.startActivity(sendIntentGmail);
    } catch (Exception e) {
        //When Gmail App is not installed or disable
        Intent sendIntentIfGmailFail = new Intent(Intent.ACTION_SEND);
        sendIntentIfGmailFail.setType("*/*");
        sendIntentIfGmailFail.putExtra(Intent.EXTRA_EMAIL, addresses);
        if (subject != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_SUBJECT, subject);
        if (body != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_TEXT, body);
        if (sendIntentIfGmailFail.resolveActivity(mContext.getPackageManager()) != null) {
            mContext.startActivity(sendIntentIfGmailFail);
        }
    }
}
Shohan Ahmed Sijan
sumber
1
Terima kasih banyak. Selamatkan hidupku
androCoder-BD
2

sederhana coba yang ini

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    buttonSend = (Button) findViewById(R.id.buttonSend);
    textTo = (EditText) findViewById(R.id.editTextTo);
    textSubject = (EditText) findViewById(R.id.editTextSubject);
    textMessage = (EditText) findViewById(R.id.editTextMessage);

    buttonSend.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String to = textTo.getText().toString();
            String subject = textSubject.getText().toString();
            String message = textMessage.getText().toString();

            Intent email = new Intent(Intent.ACTION_SEND);
            email.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
            // email.putExtra(Intent.EXTRA_CC, new String[]{ to});
            // email.putExtra(Intent.EXTRA_BCC, new String[]{to});
            email.putExtra(Intent.EXTRA_SUBJECT, subject);
            email.putExtra(Intent.EXTRA_TEXT, message);

            // need this to prompts email client only
            email.setType("message/rfc822");

            startActivity(Intent.createChooser(email, "Choose an Email client :"));

        }
    });
}
NagarjunaReddy
sumber
3
Bagaimana ini lebih baik daripada jawaban yang sudah ada ketika Anda memposting ini? Itu hanya terlihat seperti salinan dari jawaban yang diterima yang dibungkus dalam suatu kegiatan.
Sam
2

Solusi lain bisa jadi

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.setType("plain/text");
emailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Yo");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hi");
startActivity(emailIntent);

Dengan asumsi sebagian besar perangkat android sudah menginstal aplikasi GMail.

silentsudo
sumber
@PedroVarela kita selalu dapat memeriksa aktivitas tidak ditemukan pengecualian.
silentsudo
1
Ya kita bisa. Tetapi solusi Anda bukanlah yang tepat. Dokumentasi Android menyatakan dengan jelas apa yang harus Anda lakukan untuk hanya menampilkan aplikasi email di pemilih maksud. Anda menulis "Dengan asumsi sebagian besar perangkat android sudah menginstal aplikasi Gmail"; Bagaimana jika itu adalah perangkat yang di-rooting dan pengguna menghapus klien Gmail ?. Misalkan Anda membuat aplikasi email sendiri ?, jika pengguna akan mengirim email, aplikasi Anda tidak akan ada dalam daftar itu. Apa yang terjadi jika gmail mengubah nama paket? Apakah Anda akan memperbarui aplikasi Anda?
Pedro Varela
2

Gunakan ini untuk mengirim email ...

boolean success = EmailIntentBuilder.from(activity)
    .to("[email protected]")
    .cc("[email protected]")
    .subject("Error report")
    .body(buildErrorReport())
    .start();

gunakan build gradle:

compile 'de.cketti.mailto:email-intent-builder:1.0.0'
Manish
sumber
2

Saya menggunakan kode ini untuk mengirim email dengan meluncurkan bagian penulisan aplikasi email langsung.

    Intent i = new Intent(Intent.ACTION_SENDTO);
    i.setType("message/rfc822"); 
    i.setData(Uri.parse("mailto:"));
    i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"[email protected]"});
    i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    i.putExtra(Intent.EXTRA_TEXT   , "body of email");
    try {
        startActivity(Intent.createChooser(i, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }
Faris Muhammed
sumber
1

Metode ini bekerja untuk saya. Ini membuka aplikasi Gmail (jika diinstal) dan mengatur mailto.

public void openGmail(Activity activity) {
    Intent emailIntent = new Intent(Intent.ACTION_VIEW);
    emailIntent.setType("text/plain");
    emailIntent.setType("message/rfc822");
    emailIntent.setData(Uri.parse("mailto:"+activity.getString(R.string.mail_to)));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, activity.getString(R.string.app_name) + " - info ");
    final PackageManager pm = activity.getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
    ResolveInfo best = null;
    for (final ResolveInfo info : matches)
        if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail"))
            best = info;
    if (best != null)
        emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
    activity.startActivity(emailIntent);
}
psiko
sumber
1
/**
 * Will start the chosen Email app
 *
 * @param context    current component context.
 * @param emails     Emails you would like to send to.
 * @param subject    The subject that will be used in the Email app.
 * @param forceGmail True - if you want to open Gmail app, False otherwise. If the Gmail
 *                   app is not installed on this device a chooser will be shown.
 */
public static void sendEmail(Context context, String[] emails, String subject, boolean forceGmail) {

    Intent i = new Intent(Intent.ACTION_SENDTO);
    i.setData(Uri.parse("mailto:"));
    i.putExtra(Intent.EXTRA_EMAIL, emails);
    i.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (forceGmail && isPackageInstalled(context, "com.google.android.gm")) {
        i.setPackage("com.google.android.gm");
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    } else {
        try {
            context.startActivity(Intent.createChooser(i, "Send mail..."));
        } catch (ActivityNotFoundException e) {
            Toast.makeText(context, "No email app is installed on your device...", Toast.LENGTH_SHORT).show();
        }
    }
}

/**
 * Check if the given app is installed on this devuice.
 *
 * @param context     current component context.
 * @param packageName The package name you would like to check.
 * @return True if this package exist, otherwise False.
 */
public static boolean isPackageInstalled(@NonNull Context context, @NonNull String packageName) {
    PackageManager pm = context.getPackageManager();
    if (pm != null) {
        try {
            pm.getPackageInfo(packageName, 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }
    return false;
}
Gal Rom
sumber
1
 Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","[email protected]", null));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Forgot Password");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Write your Pubg user name or Phone Number");
    startActivity(Intent.createChooser(emailIntent, "Send email..."));**strong text**
Tousif Akram
sumber
1

Coba ini:

String mailto = "mailto:[email protected]" +
    "?cc=" + "[email protected]" +
    "&subject=" + Uri.encode(subject) +
    "&body=" + Uri.encode(bodyText);

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse(mailto));

try {
    startActivity(emailIntent);
} catch (ActivityNotFoundException e) {
    //TODO: Handle case where no email app is available
}

Kode di atas akan membuka klien email favorit pengguna yang diawali dengan email yang siap dikirim.

Sumber

Dan Bray
sumber