builder.setAutoCancel(true) 不工作
builder.setAutoCancel(true) not working
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
final Intent intent = new Intent(MainActivity.this, AlertActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setContentText("Click here");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle(getString(R.string.app_name));
builder.addAction(R.mipmap.ic_launcher, "Test", pendingIntent);
builder.setAutoCancel(true);
NotificationManagerCompat.from(MainActivity.this).notify(0, builder.build());
}
});
}
我也尝试删除 builder.addAction(),但是当我点击通知时没有任何效果。在不添加操作的情况下单击通知时,我们如何将用户引导至特定的 activity?另外,无论哪种情况;我无法关闭通知,除非我手动滑动将其删除。
使用 setContentIntent
应该可以解决您的问题:
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
完整代码:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setContentText("Click here");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle(getString(R.string.app_name));
builder.setAutoCancel(true)
builder.addAction(R.mipmap.ic_launcher, "Test", pendingIntent);
builder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
}
});
更新:
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
autoCancel 仅在调用默认通知点击时有效如果您使用的是必须自行清除通知的按钮
在您的案例 ID 为 0 的情况下,在您的 NotificationManager 实例上调用 clear(int id)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
final Intent intent = new Intent(MainActivity.this, AlertActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setContentText("Click here");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle(getString(R.string.app_name));
builder.addAction(R.mipmap.ic_launcher, "Test", pendingIntent);
builder.setAutoCancel(true);
NotificationManagerCompat.from(MainActivity.this).notify(0, builder.build());
}
});
}
我也尝试删除 builder.addAction(),但是当我点击通知时没有任何效果。在不添加操作的情况下单击通知时,我们如何将用户引导至特定的 activity?另外,无论哪种情况;我无法关闭通知,除非我手动滑动将其删除。
使用 setContentIntent
应该可以解决您的问题:
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
完整代码:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setContentText("Click here");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle(getString(R.string.app_name));
builder.setAutoCancel(true)
builder.addAction(R.mipmap.ic_launcher, "Test", pendingIntent);
builder.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
}
});
更新:
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
autoCancel 仅在调用默认通知点击时有效如果您使用的是必须自行清除通知的按钮
在您的案例 ID 为 0 的情况下,在您的 NotificationManager 实例上调用 clear(int id)