Dopo un giorno di lavoro, finalmente sono in grado di allegare più file di immagine da \ sdcard \ accident \ folder al client di posta elettronica. Per allegare più file ho dovuto aggiungere le immagini a ContentResolver, che è responsabile per il fornitore di immagini di gallerie. Ecco il codice completo ---
Intent sendIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
sendIntent.setType("plain/text");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Accident Capture");
sendIntent.putExtra(Intent.EXTRA_TEXT, emailBody);
ArrayList<Uri> uriList = getUriListForImages();
sendIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
Log.d(TAG, "Size of the ArrayList :: " +uriList.size());
FormHolderActivity.this.startActivity(Intent.createChooser(sendIntent, "Email:"));
Quindi non v'è alcun cambiamento nella prima sezione del codice - ma il cambiamento è in getUriListForImages() metodo che è il seguente ---
private ArrayList<Uri> getUriListForImages() throws Exception {
ArrayList<Uri> myList = new ArrayList<Uri>();
String imageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/accident/";
File imageDirectory = new File(imageDirectoryPath);
String[] fileList = imageDirectory.list();
if(fileList.length != 0) {
for(int i=0; i<fileList.length; i++)
{
try
{
ContentValues values = new ContentValues(7);
values.put(Images.Media.TITLE, fileList[i]);
values.put(Images.Media.DISPLAY_NAME, fileList[i]);
values.put(Images.Media.DATE_TAKEN, new Date().getTime());
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.ImageColumns.BUCKET_ID, imageDirectoryPath.hashCode());
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileList[i]);
values.put("_data", imageDirectoryPath + fileList[i]);
ContentResolver contentResolver = getApplicationContext().getContentResolver();
Uri uri = contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, values);
myList.add(uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return myList;
}
Funziona perfettamente e sono in grado di allegare più file di immagine al client di posta elettronica predefinito dell'emulatore e di inviarlo poi correttamente.
fonte
2011-07-15 10:15:22
Fatto Grazie mille. Votato –
Nota che c'è il rischio di disabilitare il tuo account Google se invii mail con più allegati e testo simile a spam, da gmail. Prova a utilizzare un account di sviluppo quando provi questo. –
Funziona solo per la prima volta. Quando invio le 2 mail contemporaneamente, funziona solo per 1 volta. –