Я разрабатываю приложение для Android. В моем приложении я показываю уведомление, которое запускается изнутри широковещательного приемника. Отображение уведомления от получателя работает нормально. Но у меня есть небольшая проблема с тем, что я хочу, чтобы это было. Это уведомление о самоотмене. Не может быть закрыт пользователем.
Что происходит сейчас, так это то, что когда он запущен, он не добавляется в качестве нового уведомления в панель уведомлений, если оно уже существует. Просто существующий продолжает показывать. Я хочу, чтобы он добавлялся всякий раз, когда он запускается, независимо от того, сколько уведомлений, сделанных этим диспетчером уведомлений внутри приемника, существует.
Это мой приемник, который запускает уведомление о самозакрытии
public class GalleryImageUploadReceiver extends BroadcastReceiver {
private Context context;
private NotificationCompat.Builder notification;
private static final int NOTIFICATION_ID = 1;
private NotificationManager nm;
@Override
public void onReceive(Context pContext, Intent intent) {
this.context = pContext;
initialize(intent);
showProcessNotification();
uploadImagesToServer();
}
private void initialize(Intent intent)
{
//initialize data
}
private void uploadImagesToServer()
{
// do async task and close itself
if(nm!=null)
{
nm.cancel(NOTIFICATION_ID);
}
}
public void showProcessNotification()
{
try{
notification = new NotificationCompat.Builder(context);
notification.setAutoCancel(true);
notification.setSmallIcon(R.mipmap.ic_launcher);
notification.setWhen(System.currentTimeMillis());
notification.setTicker("Uploading image(s)...");
notification.setContentTitle(context.getResources().getString(R.string.app_name));
notification.setContentTitle("Uploading image(s)...");
notification.setAutoCancel(true);
notification.setOngoing(true);
notification.setDefaults(Notification.FLAG_ONGOING_EVENT);
nm = (NotificationManager)context.getApplicationContext().getSystemService(context.getApplicationContext().NOTIFICATION_SERVICE);
nm.notify(NOTIFICATION_ID,notification.build());
}
catch (Exception e)
{
}
}
public void uploadImages(Context context,Intent intent)
{
onReceive(context,intent);
}
}
Вот как я запускаю уведомление, используя приемник в действии
//inside a click listener
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver();
receiver.uploadImages(getBaseContext(),intent);
Проблема с этим кодом заключается в том, что когда я нажимаю кнопку, новое уведомление переопределяет существующее, и поэтому на экране отображается только одно уведомление. Независимо от того, сколько раз я нажимаю на нее. Например, если уведомление длится 5 секунд, когда я снова нажимаю кнопку через 2 секунды после запуска первого, существующее будет длиться 7 секунд. Новый не добавляется в панель уведомлений. Как я могу сделать так, чтобы он добавлялся как новый при каждом нажатии кнопки.