首页 > 解决方案 > 在不打开应用程序的情况下单击通知按钮

问题描述

我正在使用警报管理器使用以下代码在特定时间发送通知:-

 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);

在这里,我想在单击时关联的通知中添加一个按钮,这样当用户单击该按钮时,一些特定的代码应该在不打开应用程序的情况下运行,然后通知消失,这就是我想要事件的完成/完成按钮

标签: androidnotifications

解决方案


我认为您可以PendingIntent在您的中删除NotificationComat,然后该应用程序将不再导航到MainActivity

此外,鼓励用户像任何其他 Android 用户一样向左/向右滑动以关闭通知。


推荐阅读