Cadena Spannable con imagen que no funciona con la notificación push

Estoy intentando utilizar la secuencia spannable con la imagen en la notificación del empuje. No está trabajando. En realidad quiero mostrar emoticon en la notificación push como wattsapp. Si estoy usando la cadena spannable simple está trabajando. La misma cadena spannable con la imagen está trabajando muy bien con textview.

Para esto también he intentado la notificación de empuje de encargo pero no conseguí éxito.

Mi código es el siguiente:

MainActivity.class

package com.example.tt.notificationtest; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.text.Spannable; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.style.BackgroundColorSpan; import android.text.style.ImageSpan; import android.text.style.RelativeSizeSpan; import android.view.View; import android.widget.Button; import android.widget.RemoteViews; import android.widget.TextView; public class MainActivity extends Activity { Button btnNotification; TextView txtMsg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtMsg = (TextView) findViewById(R.id.txtMsg); btnNotification = (Button) findViewById(R.id.btnNotification); btnNotification.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Notify("Testing", "msg"); Notify2(); } }); } private void Notify2(){ int icon = R.drawable.asdf; long when = System.currentTimeMillis(); Notification notification = new Notification(icon, "Custom Notification", when); NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification); contentView.setImageViewResource(R.id.image, R.drawable.asdf); SpannableString ss = new SpannableString("abcd"); Drawable d = getResources().getDrawable(R.drawable.asdf); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); contentView.setTextViewText(R.id.title, "Custom notification"); contentView.setTextViewText(R.id.text, ss); notification.contentView = contentView; Intent notificationIntent = new Intent(this, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.contentIntent = contentIntent; notification.flags |= Notification.FLAG_NO_CLEAR; //Do not clear the notification notification.defaults |= Notification.DEFAULT_LIGHTS; // LED notification.defaults |= Notification.DEFAULT_VIBRATE; //Vibration notification.defaults |= Notification.DEFAULT_SOUND; // Sound mNotificationManager.notify(1, notification); } private void Notify(String notificationTitle, String notificationMessage){ //This is working // SpannableString ss = new SpannableString("Large\n\n" ); // index 103 - 112 // ss.setSpan(new BackgroundColorSpan(Color.CYAN), 0, 5, 0); //this is not working SpannableString ss = new SpannableString("abcd"); Drawable d = getResources().getDrawable(R.drawable.asdf); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); txtMsg.setText(ss); Intent i = new Intent(MainActivity.this, MainActivity.class); PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0); Notification notification = new NotificationCompat.Builder(MainActivity.this) .setContentTitle(notificationTitle) .setContentText(ss) .setSmallIcon(R.drawable.asdf) // .setLargeIcon(bitmap) // .setDefaults(Notification.DEFAULT_ALL) .setStyle(new NotificationCompat.BigTextStyle().bigText(ss)) .setAutoCancel(true) .setContentIntent(pi) .build(); NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(2, notification); } } 

Activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.tt.notificationtest.MainActivity"> <TextView android:id="@+id/txtMsg" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me" android:id="@+id/btnNotification"/> </LinearLayout> 

Custom_notification.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/title" android:layout_toRightOf="@id/image" /> </RelativeLayout> 

3 Solutions collect form web for “Cadena Spannable con imagen que no funciona con la notificación push”

Esta es la única manera que conseguí que funcione:

Spanned mssg; Mssg = Html.fromHtml (URLDecoder.decode ("% F0% 9F% 98% 82"));

Puede variar dependiendo de cómo recibes tu texto, en mi caso estoy enviando los emojicons usando unicode a un servidor GCM y no tengo que preocuparme por el URLDecoder, pero si recibo un mensaje enviado desde un emojicon PHP Biblioteca y no desde un dispositivo Android la única manera de mostrarlo correctamente fue con el URLDecoder.

Así que si estás trabajando con GCM debería estar trabajando con

Spanned mssg; Mssg = Html.fromHtml (intent.getStringExtra ("mensaje"));

¡Espero eso ayude!

Mixpanel tiene una solución de trabajo para enviar emoticonos en notificaciones push. Puedes encontrar la descripción aquí

Estás utilizando código obsoleto aquí

 Notification notification = new Notification(icon, "Custom Notification", when); 

Introduzca aquí la descripción de la imagen

En su lugar, utilice su RemoteView como NotificationBuilder.sentContent(remoteView)

Eche un vistazo a este ejemplo de Notificación personalizada

  • Cómo agregar una notificación de inserción en mi propia aplicación de Android
  • ¿La notificación de FCM es confiable o no en android?
  • Android push mensaje sin gcm es posible?
  • Notificaciones Locales en Cordova 3.0.0
  • Notificación de Android Push (lento)
  • ¿Cómo analizar enviar push sin registro de gcm?
  • El anular el registro y el nuevo registro de mensajes GCM hace que dos regId sean válidos. ¿Es esto como se pretende?
  • Ionic Push notificación: ¿Cómo manejar onClick?
  • Implementación C2DM código PHP
  • GCM: java.lang.noclassdeffounderror: com.google.android.gcm.GCMRegistrar
  • Envío de mensajes (notificación) a un grupo - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.