Отменить / отклонить уведомление на иконке - PullRequest
0 голосов
/ 22 сентября 2018

Я использую OneSignal для отображения уведомлений моему пользователю.Уведомления работают нормально, но я заметил, что если я отменю уведомление, «смахивая» его в панели уведомлений, то уведомление останется навсегда, вот изображение, показывающее уведомление на значке приложения, которое я хотел бы отклонить, как толькоприложение открыто:

icon

Я видел этот вопрос, показывая, что я могу отклонить уведомление, выполнив:

NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (nMgr!=null) {
    nMgr.cancelAll();
}

Но это отменяет уведомление в этой панели уведомлений, но уведомление на значке приложения остается, есть идеи, как я могу отменить его, как только мое приложение будет открыто?

РЕДАКТИРОВАТЬ 1:

Я добавил выше в OnCreate, также в OnResume, как упоминалось в ответе ниже, но 1 по-прежнему отображается на значке приложения.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я обнаружил, что с OneSignal я могу отключить значки, добавив в свой манифест следующее:

<application ...>

    <meta-data android:name="com.onesignal.BadgeCount" android:value="DISABLE" />

</application>

Начиная с 8.0 (API уровень 26), значки уведомлений можно отключить, вызвав :

String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.createNotificationChannel(mChannel);

С этой библиотекой я также могу установить номера значков вручную после их отключения.Обратите внимание, что это поддерживает только некоторые изготовленные устройства (Samsung, LG, Sony и HTC).

0 голосов
/ 22 сентября 2018

вышеприведенный код идеален, но вам нужно добавить этот код в onResume() Like

@Override
protected void onResume() {
    super.onResume();

    NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    nm.cancelAll();
}

, который поможет вам.:)

...