Android 在AlarmManager onReceive中取消报警
主活动警报启动 这是密码 私人吊挂帐篷; 私人警报经理Android 在AlarmManager onReceive中取消报警,android,alarmmanager,Android,Alarmmanager,主活动警报启动 这是密码 私人吊挂帐篷; 私人警报经理 Intent alarmIntent = new Intent(this, AlarmReceiver.class); pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); int interva
Intent alarmIntent = new Intent(this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
int interval = 10000; // 10 seconds
manager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(), interval, pendingIntent);
Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
以及如何在AlarmReceiver.class中取消报警
public class AlarmReceiver extends BroadcastReceiver {
static DatabaseHandler dbHandler;
private PendingIntent pendingIntent;
private AlarmManager manager;
public void onReceive(Context context, Intent intent) {
// SHOW NOTIFICATION
Log.e("DAYDAY", "" + "pasok");
int days = 1;
Toast.makeText(context, "DAYDAY", 10).show();
if (days == 5) {
dbHandler.deleteUser();
manager.cancel(pendingIntent);
Toast.makeText(context, "Canceled", 10).show();
}else{
int = days + 1;
dbHandler.update_days(i, emp_id, birthday);
}
}
}
如果天等于5,那么我将取消警报。
但错误是管理器为空指针。每次使用管理器时,都需要手动调用:
manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
你必须通过使用
manager=(AlarmManager)context.getSystemService(context.ALARM\u服务)您得到的是空指针,因为
pendingent
和'alarm manager'
在代码中的任何地方都没有初始化
要取消报警,请尝试以下代码-
Intent alarmIntent = new Intent(this, AlarmReceiver.class);
// get pending intent by unique tag value assigned previously
int tag = 0;
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, tag, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
manager.cancel(pendingIntent);
Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show();