我正在开发一个使用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);
答案 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) {
...
}
...
}
}