Отправка нескольких вложений по электронной почте: android.намерение.дополнительный.Поток ожидаемый Parcelable [дубликат]


Возможный дубликат:
Как прикрепить несколько файлов к почтовому клиенту в android.

Привет,

Мне не удается отправить электронное письмо с несколькими вложениями.

Вот код, который я нашел в интернете и учебниках:

String[] mArray = getResources().getStringArray(R.array.pdf_entries);               
int i = 0;
Intent theIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
theIntent.setType("application/pdf");

ArrayList<Uri> uris = new ArrayList<Uri>();

for (String file : mArray) {
    if (booleans[i]) {
        File fileIn = new File("/sdcard/mydir/"+file+".pdf");
        Uri u = Uri.fromFile(fileIn);
        Log.i("","** add: "+u);
        uris.add(u);
    }
    i++;
}
theIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(theIntent,"Select email application."));

Но я всегда получаю эту ошибку:

04-19 20:25:03.340: WARN/Bundle(5826): Key android.intent.extra.STREAM expected Parcelable but value was a java.util.ArrayList.  The default value <null> was returned.
04-19 20:25:03.356: WARN/Bundle(5826): Attempt to cast generated internal exception:
04-19 20:25:03.356: WARN/Bundle(5826): java.lang.ClassCastException: java.util.ArrayList
04-19 20:25:03.356: WARN/Bundle(5826):     at android.os.Bundle.getParcelable(Bundle.java:1106)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.content.Intent.getParcelableExtra(Intent.java:3396)
04-19 20:25:03.356: WARN/Bundle(5826):     at com.android.email.activity.MessageCompose.initFromIntent(MessageCompose.java:1306)
04-19 20:25:03.356: WARN/Bundle(5826):     at com.android.email.activity.MessageCompose.onCreate(MessageCompose.java:334)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.os.Looper.loop(Looper.java:123)
04-19 20:25:03.356: WARN/Bundle(5826):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-19 20:25:03.356: WARN/Bundle(5826):     at java.lang.reflect.Method.invokeNative(Native Method)
04-19 20:25:03.356: WARN/Bundle(5826):     at java.lang.reflect.Method.invoke(Method.java:521)
04-19 20:25:03.356: WARN/Bundle(5826):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-19 20:25:03.356: WARN/Bundle(5826):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-19 20:25:03.356: WARN/Bundle(5826):     at dalvik.system.NativeStart.main(Native Method)
04-19 20:25:03.403: INFO/SurfaceFlinger(1305): 

Большое Спасибо за любое предложение / учебник.

2 3

2 ответа:

    public class EmailActivity extends Activity {

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

    public void buttonClickMethod(View buttonObject){
            emailMultipleFiles(arrayOfFilestoSend[],"Subject","Message Content");
    }

    private void emailMultipleFiles(File[] attachmentFiles, String subjectContent, String messageContent) {
            Intent email = new Intent(Intent.ACTION_SEND_MULTIPLE);
            email.putExtra(Intent.EXTRA_SUBJECT, subjectContent);
            email.putExtra(Intent.EXTRA_TEXT, messageContent);

            ArrayList<Uri> uriList = new ArrayList<Uri>();
            for (int i = 0; i < attachmentFiles.length; i++) {
                uriList.add(Uri.fromFile(attachmentFiles[i]));
            }

            email.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
            email.setType("text/plain");
            /** or use **/ 
            email.setType("message/rfc822");
            startActivity(email);
    }
    }

Как прикрепить несколько файлов к почтовому клиенту в android

Изменить(к точке, где дифференциал):

Намерение.ACTION_SEND != Намерение.ACTION_SEND_MULTIPLE