每次从 Android 中的广播接收器触发时,如何显示添加为新通知的通知
How to show notification that is added as new each time it is fired from broadcast receiver in Android
我正在开发 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);
}
}
这就是我在 activity
中使用接收器发送通知的方式
//inside a click listener
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver();
receiver.uploadImages(getBaseContext(),intent);
该代码的问题是,当我单击按钮时,新通知会覆盖现有通知,因此屏幕上只会显示一个通知。无论我点击多少次。例如,如果通知持续 5 秒,当我在第一次触发 2 秒后再次单击按钮时,现有的将持续 7 秒。通知栏中未附加新的。我怎样才能让它在点击按钮时作为新的添加。
为每个通知使用唯一的通知 ID。因为您正在使用常量 'NOTIFICATION_ID' 新通知会覆盖现有通知。
我正在开发 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);
}
}
这就是我在 activity
中使用接收器发送通知的方式//inside a click listener
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver();
receiver.uploadImages(getBaseContext(),intent);
该代码的问题是,当我单击按钮时,新通知会覆盖现有通知,因此屏幕上只会显示一个通知。无论我点击多少次。例如,如果通知持续 5 秒,当我在第一次触发 2 秒后再次单击按钮时,现有的将持续 7 秒。通知栏中未附加新的。我怎样才能让它在点击按钮时作为新的添加。
为每个通知使用唯一的通知 ID。因为您正在使用常量 'NOTIFICATION_ID' 新通知会覆盖现有通知。