0

アラームが宣言されているサービス(AlarmService.java)があります:

           Intent intentAlarm = new Intent(this, TimeAlarm.class);             
           intentAlarm.putExtra("Notif_body", Notif_Body);             
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, 0);
           alarmManager.set(AlarmManager.RTC_WAKEUP,new GregorianCalendar().getTimeInMillis()+5*1000, displayIntent);

チェックボックスがオフになったら、そのアラームを削除したいアクティビティ(user_settings.java):

            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            Intent intentAlarm = new Intent(this,TimeAlarm.class);
            PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, 0);               
            alarmManager.cancel(displayIntent);

しかし、アラームが削除されていないのはなぜですか?

4

2 に答える 2

0

私の問題は:

追加する代わりに:

if(bool_activate_reminder==true){
//call the alarm method;
}

やっていた:

 if(bool_activate_reminder=true){//with one equal 
    //call the alarm method;
    }

そのため、常にアクセスされていました...修正してサービスで次のコードを使用したとき:

 Intent intentAlarm = new Intent(getApplication(), TimeAlarm.class);    
               //add the notification body to the intent:
               intentAlarm.putExtra("Notif_body", Notif_Body);             
               // create the object
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
               //set the alarm for particular time
                PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
               alarmManager.set(AlarmManager.RTC_WAKEUP,new GregorianCalendar().getTimeInMillis()+20*1000, displayIntent);

そして活動で:

 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            Intent intentAlarm = new Intent(getApplication(),TimeAlarm.class);
            PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);               
            alarmManager.cancel(displayIntent);

それはうまくいきました..

于 2013-11-24T13:36:09.197 に答える
0
intentAlarm.putExtra("Notif_body", Notif_Body); 

アラームのキャンセル中にintentAlarmを作成するときに上記の行を配置するか、アラームを設定している時間から削除します。これはうまくいくと思います。

于 2013-11-11T19:21:47.580 に答える