java.lang.ClassCastException:android.text.SpannableStringBuilder不能转换为java.util.ArrayList

我正在使用phonegap Android插件:EmailComposerwithAttachments https://github.com/phonegap/phonegap-plugins/tree/master/Android/EmailComposerWithAttachments ,执行startActivitywithResult函数时发生以下错误。 我正在使用Android 4.2和Cordova 2.5.0

java.lang.ClassCastException:android.text.SpannableStringBuilder不能转换为java.util.ArrayList

// setting attachments try { JSONArray attachments = parameters.getJSONArray("attachments"); if (attachments != null && attachments.length() > 0) { ArrayList<Uri> uris = new ArrayList<Uri>(); //convert from paths to Android friendly Parcelable Uri's for (int i=0; i<attachments.length(); i++) { try { File file = new File(attachments.getString(i)); if (file.exists()) { Uri uri = Uri.fromFile(file); uris.add(uri); } } catch (Exception e) { LOG.e("EmailComposer", "Error adding an attachment: " + e.toString()); } } if (uris.size() > 0) { emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); } } } catch (Exception e) { LOG.e("EmailComposer", "Error handling attachments param: " + e.toString()); } this.cordova.startActivityForResult(this, emailIntent, 0); 

以下是完整的跟踪。

 04-02 16:34:13.120: W/Bundle(698): Key android.intent.extra.TEXT expected ArrayList<CharSequence> but value was a android.text.SpannableStringBuilder. The default value <null> was returned. 04-02 16:34:13.150: W/Bundle(698): Attempt to cast generated internal exception: 04-02 16:34:13.150: W/Bundle(698): java.lang.ClassCastException: android.text.SpannableStringBuilder cannot be cast to java.util.ArrayList 04-02 16:34:13.150: W/Bundle(698): at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1326) 04-02 16:34:13.150: W/Bundle(698): at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:4224) 04-02 16:34:13.150: W/Bundle(698): at android.content.Intent.migrateExtraStreamToClipData(Intent.java:6682) 04-02 16:34:13.150: W/Bundle(698): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1410) 04-02 16:34:13.150: W/Bundle(698): at android.app.Activity.startActivityForResult(Activity.java:3351) 04-02 16:34:13.150: W/Bundle(698): at android.app.Activity.startActivityForResult(Activity.java:3312) 04-02 16:34:13.150: W/Bundle(698): at org.apache.cordova.DroidGap.startActivityForResult(DroidGap.java:812) 04-02 16:34:13.150: W/Bundle(698): at org.apache.cordova.example.EmailComposer.sendEmail(EmailComposer.java:157) 04-02 16:34:13.150: W/Bundle(698): at org.apache.cordova.example.EmailComposer.execute(EmailComposer.java:36) 04-02 16:34:13.150: W/Bundle(698): at org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:61) 04-02 16:34:13.150: W/Bundle(698): at org.apache.cordova.api.PluginManager.exec(PluginManager.java:220) 04-02 16:34:13.150: W/Bundle(698): at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:44) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewCore.nativeMouseClick(Native Method) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewCore.nativeMouseClick(Native Method) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewCore.access$6800(WebViewCore.java:57) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewCore$EventHub.dispatchWebKitEvent(WebViewCore.java:1806) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewInputDispatcher.dispatchWebKitEvent(WebViewInputDispatcher.java:689) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewInputDispatcher.dispatchWebKitEvents(WebViewInputDispatcher.java:639) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewInputDispatcher.access$800(WebViewInputDispatcher.java:78) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewInputDispatcher$WebKitHandler.handleMessage(WebViewInputDispatcher.java:1153) 04-02 16:34:13.150: W/Bundle(698): at android.os.Handler.dispatchMessage(Handler.java:99) 04-02 16:34:13.150: W/Bundle(698): at android.os.Looper.loop(Looper.java:137) 04-02 16:34:13.150: W/Bundle(698): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:827) 04-02 16:34:13.150: W/Bundle(698): at java.lang.Thread.run(Thread.java:856) 

Solutions Collecting From Web of "java.lang.ClassCastException:android.text.SpannableStringBuilder不能转换为java.util.ArrayList"

这是在Android 4.x的这个错误

您可以通过replaceEmailComposer.java中的以下行来解决纯文本电子邮件的问题:

 emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, body); 

 ArrayList<String> extra_text = new ArrayList<String>(); extra_text.add(body); emailIntent.putStringArrayListExtra(android.content.Intent.EXTRA_TEXT, extra_text); 

但是这不适用于HTML电子邮件,因为Spanned(由Html.fromHtml返回)不是Charsequence的子类。 当我尝试将Html.fromHtml()的结果转换为string时,这些标签作为文本的一部分出现:-(

另外当我尝试这个,纯文本电子邮件正文使用Gmail应用程序时出现,但它没有出现在股票电子邮件应用程序 – 身体一直是空白。