3 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
cancel()以AlarmManager與PendingIntent您使用的等效的方式調(diào)用setRepeating():
Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
我嘗試了各種方法,但無法使它起作用,所以我決定做一個(gè)骯臟的把戲。當(dāng)我想取消重復(fù)的鬧鐘時(shí),我使用創(chuàng)建鬧鐘的相同方法(因此替換了舊的鬧鐘),然后立即將其取消。使用此方法,如果boolean變量設(shè)置為true,它將創(chuàng)建警報(bào),它會替換并取消具有相同ID的替換:
static void CancelRepeatingAlarm(Context context, boolean creating){
//if it already exists, then replace it with this one
Intent alertIntent = new Intent(context, AlertReceiver.class);
PendingIntent timerAlarmIntent = PendingIntent
.getBroadcast(context, 100, alertIntent,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (creating){
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), INTERVAL, timerAlarmIntent);
}else{
alarmManager.cancel(timerAlarmIntent);
}

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
在中MainActivity,設(shè)置鬧鐘時(shí)間。如果要使用多個(gè)警報(bào),請使用SharedPreferences來存儲它們各自的ID。這是代碼:
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, _id,intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),
pendingIntent);
public static Context getContext() {
return mContext;
}
mContext=mainactivity.this;
您第二次Activity使用來自的相同ID SharedPreferences。在我的代碼中,我從ArrayList獲得ID Alarm_id。最后,您可以在此處使用MainActivity上下文MainActivity.getContext()。這是代碼:
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intentAlarm = new Intent(AlarmListviewActivity.this,
MainActivity.class);
PendingIntent morningIntent = PendingIntent.getBroadcast(MainActivity.getContext(), Alarm_id.get(positon),
intentAlarm, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.cancel(morningIntent);
morningIntent.cancel();
- 3 回答
- 0 關(guān)注
- 363 瀏覽
添加回答
舉報(bào)