java - 单击按钮时如何隐藏通知?
问题描述
当我单击是或否按钮时,我想隐藏我的通知。我的代码运行良好,但是当我单击一个按钮时,它会进入主屏幕。我只想隐藏通知而不进入主屏幕。你能告诉我什么是最简单的制作方法吗?感谢您的任何建议:)
通知接收器类:
public class NotificationReceiver extends BroadcastReceiver {
NotificationManager notificationManager;
@Override
public void onReceive(Context context, Intent intent) {
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent repeating_intent = new Intent(context, RepeatingActivity.class);
repeating_intent.putExtra("what", 0);
repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent yes = new Intent(context, RepeatingActivity.class);
yes.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
yes.putExtra("what", 1);
PendingIntent yesIntent = PendingIntent.getActivity(context, 1, yes, PendingIntent.FLAG_UPDATE_CURRENT);
Intent no = new Intent(context, RepeatingActivity.class);
no.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
no.putExtra("what", 2);
PendingIntent noIntent = PendingIntent.getActivity(context, 2, no, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.logo)
.setContentTitle("Hello")
.setContentText("XD")
.setAutoCancel(true)
.addAction(R.drawable.yes, "Yes", yesIntent)
.addAction(R.drawable.no, "No", noIntent);
builder.getNotification().flags |= NotificationCompat.FLAG_AUTO_CANCEL;
notificationManager.notify(0, builder.build());
}
}
重复活动类:
public class RepeatingActivity extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int what = getIntent().getIntExtra("what",-1);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(0);
if(what==0) {
setContentView(R.layout.repeating_activity_layout);
}
else if(what==1) {
Toast.makeText(getApplicationContext(), "Hello Yes!", Toast.LENGTH_LONG).show();
finish();
goHome();
}
else if(what==2) {
Toast.makeText(getApplicationContext(), "Hello No!", Toast.LENGTH_LONG).show();
finish();
goHome();
}
}
public void goHome() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
}
解决方案
根据官方文档
有五种方法可以删除通知,如果您想通过单击按钮将其删除,可以这样做:
notificationManager.cancelAll();//place this line in click listener of a button
推荐阅读
- python - 如何在 Flask-SQLAlchemy 中为两个相同的结构表分页?
- redux - Redux Saga - 为什么 yield all 不等待 put 操作完成后再继续
- python - pygame中定义的变量抛出错误
- python - 从特定频道抓取 YouTube 视频并进行搜索?
- excel - 从网站中删除某个字符串的中间和结尾的空格
- android - Android/Kotlin,如何减少此代码的重复部分
- android - Android Studio 4.0 模拟器黑屏
- javascript - 如何确保 Bootstrap 模态仅将高度从向下更改为向上?
- c++ - 如何在类中安全地访问 const 共享数组
- aerospike - 是否可以在 Aerospike 中使用主键和辅助键来获取记录?