【问题标题】:Cancel Alarm in AlarmManager onReceive在AlarmManager onReceive 中取消警报
【发布时间】:2015-08-26 05:30:51
【问题描述】:

在主要活动中警报开始 这是代码 私有的 PendingIntent 私有 AlarmManager 管理器;

    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,那么我将取消警报。 但错误是管理器是空指针。

【问题讨论】:

    标签: android alarmmanager


    【解决方案1】:

    每次使用ma​​nager,都需要手动调用:

    manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    

    【讨论】:

      【解决方案2】:

      你必须使用它再次获得它

      ma​​nager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

      【讨论】:

        【解决方案3】:

        你得到空指针是因为pendingIntent'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();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多