java.lang.ClassCastException:android.text.SpannableStringBuilder无法强制转换为java.util.ArrayList

java.lang.ClassCastException:android.text.SpannableStringBuilder无法强制转换为java.util.ArrayList,第1张

概述我正在使用phonegapAndroid插件:EmailComposerwithAttachmentshttps://github.com/phonegap/phonegap-pluginsree/master/Android/EmailComposerWithAttachments,并且在执行startActivitywithResult函数时出现以下错误.我正在使用Android4.2和Cordova2.5.0java.lang.ClassCas

我正在使用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.ArrayList04-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.access00(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.access0(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)

解决方法:

这是AndroID 4.x中的这个this bug

您可以通过在EmailComposer.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()的结果转换为字符串时,标记显示为文本的一部分:-(

此外,当我尝试这个时,使用Gmail应用程序时出现了纯文本电子邮件,但它没有出现在库存电子邮件应用程序 – 正文总是空白.

总结

以上是内存溢出为你收集整理的java.lang.ClassCastException:android.text.SpannableStringBuilder无法强制转换为java.util.ArrayList全部内容,希望文章能够帮你解决java.lang.ClassCastException:android.text.SpannableStringBuilder无法强制转换为java.util.ArrayList所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1096905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存