Java.lang.ClassCastException: android.text.SpannableStringBuilder no se puede convertir en java.util.ArrayList

Estoy usando el complemento de Android phonegap: EmailComposerwithAttachments https://github.com/phonegap/phonegap-plugins/tree/master/Android/EmailComposerWithAttachments y se produce el siguiente error al ejecutar la función startActivitywithResult. Estoy usando Android 4.2 con Cordova 2.5.0

Java.lang.ClassCastException: android.text.SpannableStringBuilder no se puede convertir en 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); 

El siguiente es el rastreo completo.

 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) 

Es abajo de este error en Android 4.x

Puede solucionar el problema de mensajes de texto sin formato mediante la sustitución de esta línea en EmailComposer.java:

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

con

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

Pero esto no funcionará para los correos HTML porque Spanned (devuelto por Html.fromHtml) no es una subclase de Charsequence. Cuando intenté emitir el resultado de Html.fromHtml () a una cadena, las etiquetas aparecieron como parte del texto 🙁

También cuando lo intenté, el cuerpo de mensajes de texto sin formato apareció al usar la aplicación de Gmail pero no apareció en la aplicación de correo electrónico de correo electrónico – cuerpo siempre estaba en blanco.

  • StyleSpan no se aplica a SpannableString en TextView
  • El texto se ensucia con ImageSpan en EditText
  • Texto de estilo del parámetro en método getString (int resId, Object ... formatArgs)
  • El texto extensible no funciona en el fragmento de diálogo
  • Reducir la altura y el ancho de ImageSpan
  • El método draw () de ReplacementSpan no se llama
  • Cómo cambiar dinámicamente el tamaño del texto en Android
  • Establecer una fuente y un color diferentes a parte de un TextView
  • La mejor manera de obtener una SpannableString de un SpannableStringBuilder
  • Incorpore la línea que envuelve al usar bulletspan
  • Establecer una matriz de cadenas en negrita en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.