2014-11-25 87 views
1

我無法使用Intent選擇器在Android中使用多個附件發送電子郵件。從選擇器中選擇gmail後,它拋出不幸的是gmail已停止錯誤。我不會犯我犯過什麼錯誤。誰能幫我?以編程方式無法在多個附件中發送電子郵件

final Intent ei = new Intent(Intent.ACTION_SEND_MULTIPLE); 
             ei.setType("plain/text"); 
             ei.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); 
             ei.putExtra(Intent.EXTRA_SUBJECT, "SFC App Equiry"); 
             ei.putExtra(android.content.Intent.EXTRA_TEXT,Html.fromHtml("<b>"+"Packing Date"+"</b>&nbsp;"+pdate+"<br><b>"+"Shifting Date"+"</b>&nbsp;"+sdate+"<br><b>"+"Delivery Date"+"</b>&nbsp;"+ddate+"<br><b>"+"Source city"+"</b>&nbsp;"+scity+"<br><b>"+"Destination City"+"</b>&nbsp;"+dcity+"<br><b>"+"Source Property Type"+"</b>&nbsp;"+stprop+"<br><b>"+"Destination Property Type"+"</b>&nbsp;"+dtprop)); 

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

            //uris.parse("file://sdcard/Images/20140812_130215.jpg"); 
            //uris.add("file://sdcard/Images/20140812_130227.jpg"); 

            File fileIn = new File(ppath); 
            File fileIn1 = new File(ppath1); 
            File fileIn2 = new File(ppath2); 
            File fileIn3 = new File(ppath3); 
            File fileIn4 = new File(ppath4); 
            File fileIn5 = new File(ppath5); 
            File fileIn6 = new File(ppath6); 

            Uri u = Uri.fromFile(fileIn); 
            Uri u1 = Uri.fromFile(fileIn1); 
            Uri u2 = Uri.fromFile(fileIn2); 
            Uri u3 = Uri.fromFile(fileIn3); 
            Uri u4 = Uri.fromFile(fileIn4); 
            Uri u5 = Uri.fromFile(fileIn5); 
            Uri u6 = Uri.fromFile(fileIn6); 

            uris.add(u); 
            uris.add(u1); 
            uris.add(u2); 
            uris.add(u3); 
            uris.add(u4); 
            uris.add(u5); 
            uris.add(u6); 



            ei.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
            startActivityForResult(Intent.createChooser(ei, "Sending multiple attachment"), 12345); 

我的堆棧跟蹤是:

11-26 10:58:41.791: W/Bundle(19728): Key android.intent.extra.TEXT expected ArrayList<CharSequence> but value was a java.lang.String. The default value <null> was returned. 
11-26 10:58:41.801: W/Bundle(19728): Attempt to cast generated internal exception: 
11-26 10:58:41.801: W/Bundle(19728): java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList 
11-26 10:58:41.801: W/Bundle(19728): at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1367) 
11-26 10:58:41.801: W/Bundle(19728): at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:5265) 
11-26 10:58:41.801: W/Bundle(19728): at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7843) 
11-26 10:58:41.801: W/Bundle(19728): at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7810) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1423) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.Activity.startActivityForResult(Activity.java:3547) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.Activity.startActivityForResult(Activity.java:3508) 
11-26 10:58:41.801: W/Bundle(19728): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:840) 
11-26 10:58:41.801: W/Bundle(19728): at com.ipot.setringtone.MainActivity.onCreate(MainActivity.java:131) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.Activity.performCreate(Activity.java:5484) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2498) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.ActivityThread.access$900(ActivityThread.java:179) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 
11-26 10:58:41.801: W/Bundle(19728): at android.os.Handler.dispatchMessage(Handler.java:102) 
11-26 10:58:41.801: W/Bundle(19728): at android.os.Looper.loop(Looper.java:146) 
11-26 10:58:41.801: W/Bundle(19728): at android.app.ActivityThread.main(ActivityThread.java:5641) 
11-26 10:58:41.801: W/Bundle(19728): at java.lang.reflect.Method.invokeNative(Native Method) 
11-26 10:58:41.801: W/Bundle(19728): at java.lang.reflect.Method.invoke(Method.java:515) 
11-26 10:58:41.801: W/Bundle(19728): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1288) 
11-26 10:58:41.801: W/Bundle(19728): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1104) 
11-26 10:58:41.801: W/Bundle(19728): at dalvik.system.NativeStart.main(Native Method) 
11-26 10:58:42.431: W/ResolverActivity(19728): mLaunchedFromPackage=com.ipot.setringtone 
11-26 10:58:42.781: I/DVFSHelper(19728): DVFSHelper:: failed to load CFMS 
11-26 10:58:42.781: I/DVFSHelper(19728): DVFSHelper:: failed to load CFMS 
11-26 10:58:42.781: I/DVFSHelper(19728): DVFSHelper:: failed to load CFMS 
11-26 10:58:42.781: I/DVFSHelper(19728): DVFSHelper:: failed to load CFMS 
11-26 10:58:42.901: I/Choreographer(19728): Skipped 38 frames! The application may be doing too much work on its main thread. 
11-26 10:58:43.001: D/OpenGLRenderer(19728): Enabling debug mode 0 
11-26 10:58:47.641: D/AbsListView(19728): onDetachedFromWindow 
+0

你可以把你的日誌 – 2014-11-25 12:08:56

+0

請發佈你的stacktrace。 – 2014-11-25 12:17:22

+0

11-25 16:40:09.855:W/IconCustomizer(17966):無法加載transform_config.xml 11-25 16:40:09.975:W/Bundle(17966):鍵android.intent.extra.TEXT預期ArrayList 但值是一個java.lang.String。默認值已返回。11-25 16:40:09.985:W/Bundle(17966):嘗試投射生成的內部異常: 11-25 16:40:09.985:W/Bundle(17966):java.lang .ClassCastException:無法將java.lang.String強制轉換爲java.util.ArrayList11-25 16:40:09.985:W/Bundle(17966):\t at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1331) – Divya 2014-11-25 12:23:51

回答

1

我沒有改變任何代碼。但今天運行後,它的工作完美。不知道哪一個錯誤或正確。無論如何,現在它對我來說工作得很好,我發佈了相同的代碼。謝謝Alok Nair提供這樣的幫助。

+0

HI @Divya可以請你幫我我試圖共享文本有多個圖像,但我得到這個錯誤「鍵android.intent.extra.TEXT預期的ArrayList ,但值是java.lang.String。返回的默認值」。 我看到你面臨同類問題,如果你能解決我的問題,那麼請給出答案。 這裏是我的問題http://stackoverflow.com/questions/38293853/using-intent-share-text-with-multiple-image-in-android] – Subho 2016-07-10 16:10:30

4

您可以用下面的代碼發送郵件上多個附件:

public boolean sendEmailWithMultipleAttachments(Context context, 
                 String[] emailTo, String[] emailCC, String[] emailBCC, 
                 String subject, String emailBody, List filePaths) throws ActivityNotFoundException { 

      final Intent emailIntent = 
        new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 
      emailIntent.setType("message/rfc822"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailTo); 
      emailIntent.putExtra(android.content.Intent.EXTRA_CC, emailCC); 
      emailIntent.putExtra(android.content.Intent.EXTRA_BCC, emailBCC); 
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 
      ArrayList<String> extra_text = new ArrayList<String>(); 
      extra_text.add("Your text here"); 
      ei.putStringArrayListExtra(Intent.EXTRA_TEXT, extra_text); 

      if (filePaths != null) { 
       // has to be an ArrayList 
       ArrayList uris = new ArrayList(); 
       // convert from paths to Android friendly Parcelable Uri's 
       for (String file : filePaths) { 
        File fileIn = new File(file); 
        if (fileIn.exists()) { 
         Uri u = Uri.fromFile(fileIn); 
         uris.add(u); 
        } 
       } 
       emailIntent.putParcelableArrayListExtra 
         (Intent.EXTRA_STREAM, uris); 
      } 
      context.startActivity(Intent.createChooser(emailIntent, "Sent mail")); 
      return true; 
     } 
+0

HI @Alok可以請你幫我,我正在嘗試與多個圖像共享文本,但我得到這個錯誤「鍵android.intent.extra.TEXT預期的ArrayList ,但價值是java.lang中.String。返回默認值。「 這裏是我的問題http://stackoverflow.com/questions/38293853/using-intent-share-text-with-multiple-image-in-android] – Subho 2016-07-10 16:08:58

相關問題