NotificationCompat.Builder создает уведомления, которые отменяются после выбора одного уведомления

Мое приложение генерирует уведомления примерно так:

final Bundle intentExtras = intent.getExtras();
final String title = intentExtras.getString(Constants.EXTRA_TITLE);
final String body = intentExtras.getString(Constants.EXTRA_BODY);
final Integer notifID = intentExtras.getInt(Constants.EXTRA_ID);

// this pending intent will launch after notification is selected
Intent notificationIntent = new Intent(context, NotificationReceiverActivity.class);
notificationIntent.putExtras(intentExtras);// pass the extra data forward to NotificationReceiverActivity
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, notifID, notificationIntent, PendingIntent.FLAG_ONE_SHOT);

// build notification to show on the notification bar
try
{
    final String packagename = context.getPackageName();
    PackageInfo packageinfo = context.getApplicationContext().getPackageManager().getPackageInfo(packagename, 0);
    final int iconid = packageinfo.applicationInfo.icon;

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
            .setAutoCancel(false)
            .setContentIntent(pendingIntent)
            .setSmallIcon(iconid)
            .setContentTitle(title)
            .setContentText(body);

    // build notification and set alerts
    Notification notification = mBuilder.build();
    notification.defaults |= Notification.DEFAULT_ALL;

    // show notification
    NotificationManager notificationMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationMgr.notify(notifID, notification);
}
catch (android.content.pm.PackageManager.NameNotFoundException e)
{}

каждый notifID уникален! Однако, если приложение показывает два или более уведомлений, и пользователь выбирает одно из них, оба уведомления для приложения очищаются!

Я пытался использовать setAutoCancel(false) или же setAutoCancel(true) но это не имеет значения.

Кроме того, нет звонков NotificationManager.cancel() или же NotificationManager.cancelAll()

Как я могу запретить приложению очищать все уведомления для приложения после того, как пользователь выбрал только одно из них?

ДАЛЬНЕЙШЕЕ РАССЛЕДОВАНИЕ...

Я обнаружил, что уведомления для приложения исчезают после запуска приложения. Однако.cancel() или.cancelAll() не видно... / запутано

1 ответ

Ответ: Пешеходный (XWalkView) взял на себя смелость.cancelAll() уведомления!!! / facepalm x 100000

https://github.com/wuhengzhi/crosswalk/commit/32205e256dbb35ee70c895de4fe7c76d165b30dd

Другие вопросы по тегам