Saya telah mengerjakan program Android untuk mengirim email dengan lampiran (file gambar, file audio, dll) menggunakan Intent with ACTION_SEND
. Program ini berfungsi jika email memiliki satu lampiran. Saya biasa Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
melampirkan file gambar yang ditentukan ke email dan berfungsi dengan baik, email dapat dikirim melalui Gmail. Namun, ketika saya mencoba memiliki beberapa gambar yang dilampirkan ke email yang sama dengan menelepon Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
beberapa kali, gagal berfungsi. Tidak ada lampiran yang muncul di email.
Saya mencari dokumentasi SDK dan kelompok pengguna pemrograman Android tentang lampiran email tetapi tidak dapat menemukan info terkait. Namun, saya telah menemukan bahwa ada konstanta maksud lain ACTION_SEND_MULTIPLE
(tersedia sejak API level 4) yang mungkin memenuhi persyaratan saya. Berdasarkan dokumentasi SDK, itu hanya menyatakan bahwa itu mengirimkan banyak data ke orang lain, itu berfungsi seperti ACTION_SEND
, kecuali datanya banyak. Tetapi saya masih tidak dapat menemukan penggunaan yang benar untuk perintah ini. Saya mencoba menyatakan niat dengan ACTION_SEND_MULTIPLE
, lalu memanggil putExtra(EXTRA_STREAM, uri)
beberapa kali untuk melampirkan banyak gambar, tetapi saya mendapatkan hasil keliru yang sama seperti sebelumnya, tidak ada lampiran yang muncul di email.
Adakah yang pernah mencoba ACTION_SEND_MULTIPLE
dan membuatnya berfungsi dengan beberapa lampiran email?
sumber
Jawaban:
Berikut adalah kode yang Anda perlukan untuk membuat emailIntent yang berisi banyak lampiran.
sumber
emailIntent.setType("text/plain");
. Jika Anda menggunakan "biasa / teks" Android akan memaksa untuk menggunakan Gmail sebagai pengirim, tetapi jika Anda menggunakan "teks / biasa" itu akan menyediakan dialog pemilih aplikasi dengan Gmail, Facebook, Bluetooth dll. Jika Anda hanya ingin mengusulkan program email gunakan "teks / xml" sebagai gantinya.context.startActivity(emailIntent);
kotak centang "Gunakan secara default untuk tindakan ini" akan muncul di dialog pemilih aplikasi, dengan demikian pengguna akan dapat memilih aplikasi default untuk mengirim email dengan banyak lampiran.ACTION_SEND_MULTIPLE
harus menjadi aksinyalalu
emailIntent.setType("text/plain");
diikuti oleh:
Ini berhasil untuk saya.
sumber
Meskipun ini adalah utas lama, tetapi seperti yang ditampilkan di atas pencarian google saya ingin menambahkan sedikit petunjuk untuk membuatnya lengkap, oleh karena itu saya tersendat di atasnya.
Perlu membuat file terlampir dapat dibaca untuk aktivitas email, jika tidak, file tidak akan dilampirkan. Jadi, Anda harus menelepon ke suatu tempat
sumber
Di sini saya menemukan contoh yang bagus http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
Anda harus menggunakan
sumber
Untuk beberapa lampiran digunakan di
PutParcelableArrayListExtra(Intent.ExtraStream, uris)
mana variabel uris adalah.List<IParcelable>().
Berikut contohnya:Semoga ini membantu ;)
sumber