在Android中如何知道当前的通知id来清除通知
In Android how can i know the current notification id to clear the notification
现在 android 我将这段代码放在一个 activity 中,以便在按下按钮时显示通知。
static int notificationCount = 0;
然后
btnNotification.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent notificationIntent = new Intent(AlertsActivity.this,NotificationActivitty.class);
PendingIntent pIntent = PendingIntent.getActivity(AlertsActivity.this,notificationCount,notificationIntent,Intent.FLAG_ACTIVITY_NEW_TASK);
// Construct the notification
Notification.Builder nBuilder = new Notification.Builder(AlertsActivity.this);
nBuilder.setContentTitle("You Have a notification!");
nBuilder.setContentText("See Your Notification");
nBuilder.setSmallIcon(android.R.drawable.btn_star);
nBuilder.setContentIntent(pIntent);
nBuilder.addAction(android.R.drawable.stat_notify_call_mute, "go to", pIntent); // from icecream sandwatch - required api 16
// Build the notification
Notification noti = nBuilder.build(); // required api 16
//Send it to manager
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.notify(notificationCount++,noti);
}
}
);
来自通知管理器,我点击它的任何通知都会将我重定向到另一个 activity (NotificationActivity)
现在我放了这段代码来清除通知,但它只清除了 id 为 0 的通知,所以我怎样才能清除当前按下的通知
public class NotificationActivitty extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.cancel(0);
// manager.cancelAll(); // Cancel all notifications for this app. from manager
}
如果可能的话,我需要通过它的 id 来清除通知。
您需要在创建通知时添加这行代码!!!
notification.flags |= Notification.FLAG_AUTO_CANCEL;
这将取消点击时的通知。
进一步阅读:Open application after clicking on Notification
** 编辑,添加额外的内容以确定是否单击了某个通知
pIntent.putExtra("fromNotification", true);
您应该在您的通知中添加一个标签,然后通过提供正确的 ID 和正确的标签来清除您的通知。
如果传递相同的 id,则不需要通知计数器,因为当通知看到相同的 id 时,它会清除旧通知并放置新通知,除非您想显示用户收到了多个通知。
private static final String TAG = "YourNotification";
private static final int NOTIFICATION_ID = 101;
private Notification notification;
public NotificationManager notificationManager;
//you can create notification with it's own id and tag, text, etc by passing
//these variables into the method (int id, String tag, ... etc)
public void createNotification()
{
notification = new Notification.Builder(context)
.setContentTitle("Content title")
.setContentText("Content text")
.setSmallIcon(R.drawable.your_small_icon)
.setLargeIcon(bitmapYourLargeIcon)
.setContentIntent(pendingIntent)
.addAction(R.drawable.icon, pendingIntentAction)
.build();
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(TAG, NOTIFICATION_ID, notification);
}
要取消通知只需使用此方法:
//clears your notification in 100% cases
public void cancelNotification(int id, String tag)
{
//you can get notificationManager like this:
//notificationManage r= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(tag, id);
}
现在 android 我将这段代码放在一个 activity 中,以便在按下按钮时显示通知。
static int notificationCount = 0;
然后
btnNotification.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent notificationIntent = new Intent(AlertsActivity.this,NotificationActivitty.class);
PendingIntent pIntent = PendingIntent.getActivity(AlertsActivity.this,notificationCount,notificationIntent,Intent.FLAG_ACTIVITY_NEW_TASK);
// Construct the notification
Notification.Builder nBuilder = new Notification.Builder(AlertsActivity.this);
nBuilder.setContentTitle("You Have a notification!");
nBuilder.setContentText("See Your Notification");
nBuilder.setSmallIcon(android.R.drawable.btn_star);
nBuilder.setContentIntent(pIntent);
nBuilder.addAction(android.R.drawable.stat_notify_call_mute, "go to", pIntent); // from icecream sandwatch - required api 16
// Build the notification
Notification noti = nBuilder.build(); // required api 16
//Send it to manager
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.notify(notificationCount++,noti);
}
}
);
来自通知管理器,我点击它的任何通知都会将我重定向到另一个 activity (NotificationActivity)
现在我放了这段代码来清除通知,但它只清除了 id 为 0 的通知,所以我怎样才能清除当前按下的通知
public class NotificationActivitty extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.cancel(0);
// manager.cancelAll(); // Cancel all notifications for this app. from manager
}
如果可能的话,我需要通过它的 id 来清除通知。
您需要在创建通知时添加这行代码!!!
notification.flags |= Notification.FLAG_AUTO_CANCEL;
这将取消点击时的通知。
进一步阅读:Open application after clicking on Notification
** 编辑,添加额外的内容以确定是否单击了某个通知
pIntent.putExtra("fromNotification", true);
您应该在您的通知中添加一个标签,然后通过提供正确的 ID 和正确的标签来清除您的通知。
如果传递相同的 id,则不需要通知计数器,因为当通知看到相同的 id 时,它会清除旧通知并放置新通知,除非您想显示用户收到了多个通知。
private static final String TAG = "YourNotification";
private static final int NOTIFICATION_ID = 101;
private Notification notification;
public NotificationManager notificationManager;
//you can create notification with it's own id and tag, text, etc by passing
//these variables into the method (int id, String tag, ... etc)
public void createNotification()
{
notification = new Notification.Builder(context)
.setContentTitle("Content title")
.setContentText("Content text")
.setSmallIcon(R.drawable.your_small_icon)
.setLargeIcon(bitmapYourLargeIcon)
.setContentIntent(pendingIntent)
.addAction(R.drawable.icon, pendingIntentAction)
.build();
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(TAG, NOTIFICATION_ID, notification);
}
要取消通知只需使用此方法:
//clears your notification in 100% cases
public void cancelNotification(int id, String tag)
{
//you can get notificationManager like this:
//notificationManage r= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(tag, id);
}