我正在使用 phonegap Android 插件:EmailComposerwithAttachments https://github.com/phonegap/phonegap-plugins/tree/master/Android/EmailComposerWithAttachments执行 startActivitywithResult 函数时出现以下错误。我正在使用带有 Cordova 2.5.0 的 Android 4.2
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)