单击通知时取消AlarmManager

时间:2016-11-05 23:42:38

标签: android notifications alarmmanager

我正在开发一个使用setRepeating方法发送通知的应用程序,我希望应用程序在点击通知(未刷卡)时取消警报管理器..有没有办法做到这一点?

如果没有办法在我的通知中放置一个按钮来做同样的事情,或者我必须在应用程序中放一个按钮它自己取消它?谢谢

这是我使用intent和AlarmManager的部分

public void onClick(View v) {
        intent = new Intent(getApplicationContext(), Notifications.class);
        pend = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pend);

1 个答案:

答案 0 :(得分:1)

  

点击通知(未刷卡)..有办法吗?   是什么?

是的,当您发出通知时,您只需将警报ID添加到待处理的意图中:

Intent notificationIntent = new Intent(context, NotificationsLandingActivity.class);
notificationIntent.putExtra("alarm_id","123");

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
...

然后,您可以从已启动的活动中获取savedInstanceState中的该ID:

public class NotificationsLandingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            String alarmId = getIntent().getExtras().getString("alarm_id");
            //cancel the alarm
        } catch (Exception e) {
            ...
        }
        ...
    }
}