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
- ¿Puedo convertir un Spannable en String en android para cargar un ExpandableListView?
- Alineación de ImageSpan en la parte superior del TextView
- Android SpannableString establecer fondo detrás de parte del texto
- Alternativa a ReplacementSpan en Android
- ¿Por qué mi texto no aparece con estilo cuando se utiliza SpannableStringBuilder?
// 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)
- Establecer una cadena spannable no funciona en una simple Textview
- Android TextView formato de palabras múltiples
- Las extensiones de vínculo se pierden de la conversión de ListView
- ¿Cómo establecer múltiples extensiones en el texto de TextView en el mismo texto parcial?
- Cómo agregar el radio de la esquina y el relleno al texto spannable de la multi-línea
- Spannablestring no funciona para el botón creado mediante programación
- Html Tag Handler no se llama en Android N para "ul", "li"
- A veces, las extensiones de la imagen no son visibles cuando el contenido cubre varias líneas en la vista de texto
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.