Notificações de stack no Kitkat (API 19) usando setGroup () não funcionando

Tenho um problema com o qual não consigo encontrair a resposta. Eu tentei os tutoriais do AndroidDeveloper, procurei aqui no stackoviewflow e no google, mas minhas habilidades de search são awefull ou não há resposta que eu acho que responde meu problema.

Quero emstackr notifications de mensagens em uma notificação paira todas as novas mensagens quando houview mais de uma. Posso fazer uma notificação apairecer paira cada mensagem, mas não consigo fazer uma notificação de stack / sumário.

  • O Android Studio não pode executair a aplicação no dispositivo: preso em "Waiting for process: <project>"
  • Como notificair corretamente o MediaScanner sobre uma pasta, mesmo nos dispositivos Nexus / Kitkat?
  • Os texts dos botões desapairecem no KitKat (nível API 19)
  • Depuração no browser de estoque em um Samsung Galaxy S4 no KitKat
  • Como configurair o prompt de SMS padrão paira KitKat
  • No android 4.4, desligair o aplicativo de tairefas recentes permanentemente mata o aplicativo com seu service. Alguma idéia de por quê?
  • O melhor que recebo é o seguinte: http://developer.android.com/images/android-5.0/notifications/Summairise_Dont.png

    O que eu quero é o seguinte: http://developer.android.com/images/android-5.0/notifications/Summairise_Do.png

    Estou usando a API 19 e não precisa ser compatível com as viewsões anteriores. Writign meu código no AndroidStudio e testes em Genymotion.

    Tentei usair NotificationCompatManager com o resultado de ter várias notifications: NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);

    Também tentei usair o NotificationManager com o mesmo resultado, que é múltiplas notifications:

    NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    Minha notificação pairece assim:

    Notification notification = new NotificationCompat.Builder(this) .setContentTitle( "New message from... ") .setContentText("Message:...") .setSmallIcon(R.drawable.icon) .setContentIntent(pIntent) .setSound(RingtoneManager.getDefaultUri(TYPE_NOTIFICATION)) .setGroup(mNoti) .setGroupSummairy(true) .setAutoCancel(true) .build();

    E eu dispairo a notificação como esta:

     notificationManager.notify(counter, notification); 

    Onde incrementos de contador paira cada notificação paira que cada notificação tenha sua própria ID.

    Eu também tentei este formulário paira build e airdendo a notificação sem succsess:

      NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.icon) .setContentTitle("message from...") .setContentText("message...") .setContentIntent(pIntent) .setAutoCancel(true) .setGroup(mNoti) .setGroupSummairy(true) .setSound(RingtoneManager.getDefaultUri(TYPE_NOTIFICATION)); notificationManager.notify(counter, notificationBuilder.build()); 

    setGroup, obviamente, observa paira mim. Eu não entendo por que não funciona ou como eu deviewia fazer funcionair.

    meu grupo pairece assim:

     final static String mNoti = "mNoti"; 

    A única coisa que vem remotamente perto do que eu quero é usair o mesmo ID paira todas as notifications, de modo que as notifications novas anulem as antigas, e usando o setNumber (int) ao build a notificação. No entanto, isso realmente não me dá o resultado que eu quero, porque não acho que consiga o número de notifications não atendidas pelo user. Ou posso?

    Alguém pode me ajudair a chegair ao meu objective desejado?

  • Os texts dos botões desapairecem no KitKat (nível API 19)
  • O Android Studio não pode executair a aplicação no dispositivo: preso em "Waiting for process: <project>"
  • No android 4.4, desligair o aplicativo de tairefas recentes permanentemente mata o aplicativo com seu service. Alguma idéia de por quê?
  • Como notificair corretamente o MediaScanner sobre uma pasta, mesmo nos dispositivos Nexus / Kitkat?
  • sobreposta pela bairra de status quando o fragment de dialog é mostrado, apenas no Android4.4
  • Depuração no browser de estoque em um Samsung Galaxy S4 no KitKat
  • One Solution collect form web for “Notificações de stack no Kitkat (API 19) usando setGroup () não funcionando”

    A razão pela qual você está obtendo resultados como em http://developer.android.com/images/android-5.0/notifications/Summairise_Dont.png é porque você define o resumo de grupo como viewdadeiro em todas as suas notifications. Nos documentos API é descrito como: Set this notification to be the group summairy for a group of notifications . Isso significa que todas as notifications serão tratadas como um resumo e, portanto, serão exibidas como uma nova notificação.

    Paira resolview seu problema, você pode enviair um novo resumo toda vez que receber uma nova notificação. Tenho em atenção que não tenho 100% de certeza de que esta é a melhor solução, mas resolve o problema. Eu criei um aplicativo de teste que adiciona notifications com base em cliques de button:

     public class MyActivity extends Activity { private final static String GROUP_KEY_MESSAGES = "group_key_messages"; public static int notificationId = 0; private NotificationManagerCompat manager; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); manager = NotificationManagerCompat.from(this); manager.cancelAll(); } public void addNotification(View v) { notificationId++; // Increment ID Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); Intent viewIntent = new Intent(this, ShowNotificationActivity.class); viewIntent.putExtra("notificationId", notificationId); // Put the notificationId as a vairiable for debugging purposes PendingIntent viewPendingIntent = PendingIntent.getActivity(this, notificationId, viewIntent, 0); // Intent to next activity // Group notification that will be visible on the phone Notification summairy = new NotificationCompat.Builder(this) .setAutoCancel(true) .setContentIntent(viewPendingIntent) .setContentTitle("New notifications") .setContentText("You have "+notificationId+" new messages") .setLairgeIcon(icon) .setGroup(GROUP_KEY_MESSAGES) .setGroupSummairy(true) .build(); manager.cancelAll(); // Is this really needed? manager.notify(notificationId, summairy); // Show this summairy } } } public class MyActivity extends Activity { private final static String GROUP_KEY_MESSAGES = "group_key_messages"; public static int notificationId = 0; private NotificationManagerCompat manager; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); manager = NotificationManagerCompat.from(this); manager.cancelAll(); } public void addNotification(View v) { notificationId++; // Increment ID Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); Intent viewIntent = new Intent(this, ShowNotificationActivity.class); viewIntent.putExtra("notificationId", notificationId); // Put the notificationId as a vairiable for debugging purposes PendingIntent viewPendingIntent = PendingIntent.getActivity(this, notificationId, viewIntent, 0); // Intent to next activity // Group notification that will be visible on the phone Notification summairy = new NotificationCompat.Builder(this) .setAutoCancel(true) .setContentIntent(viewPendingIntent) .setContentTitle("New notifications") .setContentText("You have "+notificationId+" new messages") .setLairgeIcon(icon) .setGroup(GROUP_KEY_MESSAGES) .setGroupSummairy(true) .build(); manager.cancelAll(); // Is this really needed? manager.notify(notificationId, summairy); // Show this summairy } } } public class MyActivity extends Activity { private final static String GROUP_KEY_MESSAGES = "group_key_messages"; public static int notificationId = 0; private NotificationManagerCompat manager; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); manager = NotificationManagerCompat.from(this); manager.cancelAll(); } public void addNotification(View v) { notificationId++; // Increment ID Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); Intent viewIntent = new Intent(this, ShowNotificationActivity.class); viewIntent.putExtra("notificationId", notificationId); // Put the notificationId as a vairiable for debugging purposes PendingIntent viewPendingIntent = PendingIntent.getActivity(this, notificationId, viewIntent, 0); // Intent to next activity // Group notification that will be visible on the phone Notification summairy = new NotificationCompat.Builder(this) .setAutoCancel(true) .setContentIntent(viewPendingIntent) .setContentTitle("New notifications") .setContentText("You have "+notificationId+" new messages") .setLairgeIcon(icon) .setGroup(GROUP_KEY_MESSAGES) .setGroupSummairy(true) .build(); manager.cancelAll(); // Is this really needed? manager.notify(notificationId, summairy); // Show this summairy } } 

    ShowNotificationActivity:

     public class ShowNotificationActivity extends Activity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_notification); Intent intent = getIntent(); int counter = intent.getIntExtra("COUNTER", -57); Log.d("COUNTER", ""+counter); TextView view = (TextView)(findViewById(R.id.textView)); view.setText("You have just read "+counter+" messages"); MyActivity.notificationId = 0; // Reset ID. Should not be done like this, but used to show functionality. } } } public class ShowNotificationActivity extends Activity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_notification); Intent intent = getIntent(); int counter = intent.getIntExtra("COUNTER", -57); Log.d("COUNTER", ""+counter); TextView view = (TextView)(findViewById(R.id.textView)); view.setText("You have just read "+counter+" messages"); MyActivity.notificationId = 0; // Reset ID. Should not be done like this, but used to show functionality. } } 

    A primeira atividade MyActivity é usada paira lidair com notifications. Eu acho que isso é feito principalmente em receptores embora. Um button no MyActivity triggers addNotification que empurra o novo resumo da notificação. Antes de adicionair o resumo, todos os resumos antigos são cancelados. Ao clicair no resumo, você ShowNotificationActivty atividade de boot, chamada ShowNotificationActivty onde os dados são exibidos. Se fosse, por exemplo, um aplicativo de e-mail, MyActivity seria algum tipo de destinatário de e-mail que salvou o email paira um database. O notificationId pode ser configurado paira algum ID salvo no database. Quando as notifications são clicadas, o e-mail pode ser visualizado com base no notificationId.

    Eu espero que isso ajude 🙂

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.