android - 在不打开应用程序的情况下单击通知按钮
问题描述
我正在使用警报管理器使用以下代码在特定时间发送通知:-
Intent intent = new Intent(RemindersList.this, NotifierAlarm.class);
intent.putExtra("Message",message);
PendingIntent intent1 = PendingIntent.getBroadcast(RemindersList.this, reminders.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), intent1);
Toast.makeText(RemindersList.this, "Inserted Successfully", Toast.LENGTH_SHORT).show();
在清单接收器中是:-
<receiver android:name="com.example.package.NotifierAlarm" />
NotifierAlarm 类是:-
public class NotifierAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Uri alarmsound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Intent intent1 = new Intent(context, MainActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
taskStackBuilder.addParentStack(MainActivity.class);
taskStackBuilder.addNextIntent(intent1);
PendingIntent intent2 = taskStackBuilder.getPendingIntent(1, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "9");
NotificationChannel channel = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
channel = new NotificationChannel("channel_01", "ch", NotificationManager.IMPORTANCE_HIGH);
}
Notification notification =
builder.setContentTitle("New Notification")
.setContentText("msg")
.setAutoCancel(true)
.setSound(alarmsound)
.setSmallIcon(R.mipmap.ic_launcher_round)
.setContentIntent(intent2)
.setChannelId("my_channel_01")
.setVisibility(VISIBILITY_PRIVATE)
.build();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationManager.createNotificationChannel(channel);
}
notificationManager.notify(1, notification);
在这里,我想在单击时关联的通知中添加一个按钮,这样当用户单击该按钮时,一些特定的代码应该在不打开应用程序的情况下运行,然后通知消失,这就是我想要事件的完成/完成按钮
解决方案
我认为您可以PendingIntent
在您的中删除NotificationComat
,然后该应用程序将不再导航到MainActivity
。
此外,鼓励用户像任何其他 Android 用户一样向左/向右滑动以关闭通知。
推荐阅读
- javascript - 如何将 curl 命令转换为 node.js
- pyspark - 如何使用 Pyspark 在 Dataframe 中使用具有多列的平面图
- swift - 子视图不遵循约束并且关闭键盘会在视图底部留下一个黑色空间
- sqlite - 当另一个进程写入数据库时,sqlite .backup 命令失败(错误:数据库已锁定)
- python - Pandas 数据框不定位列值,给出 NaN
- ios - 为什么 NavigationLink 不能使用 SwiftUI 进行导航
- javascript - JavaScript 对象可以返回一个值和控制台日志吗?
- lua - 尝试索引本地“文件”(零值)?
- python - 用列表列表中的值替换字典的值(列表中)
- azure - 如何在没有 App 和 Cred 的情况下独立创建 sp 时获取与 AzureAD 中的服务主体关联的证书的指纹