2012-03-18 9 views
0


繰り返しアラームを停止しようとしています。
ここでは、コードの少し(FMは、ファイル書き込みオブジェクトですだ ...まだそれがアラームを停止しない
...私はすでに解決のために、すべてWeb上で見えたが、私のコードは罰金です)
alarmManager.cancel not working

public void StartAlarm() { 
    Intent intent = new Intent(getApplicationContext(), AlarmReciever.class); 
    PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); 

    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Calendar alarm = Calendar.getInstance(); 
    alarm.setTimeInMillis(System.currentTimeMillis()); 
    alarm.set(Calendar.HOUR_OF_DAY, 15); 
    alarm.set(Calendar.MINUTE, 0); 
    long alarmCal=alarm.getTimeInMillis(); 
    if (alarmCal<=new Date().getTime()) { 
     alarm.add(Calendar.DAY_OF_MONTH, 1); 
    } 
    am.setRepeating(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender); 
    FM.Write("startAlarm()"); 
    } 


public void StopAlarm() { 
     if (isAlarmRunning()) { 
      Intent intent = new Intent(getApplicationContext(), AlarmReciever.class); 
      PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); 
      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
      alarmManager.cancel(sender); 
      FM.Write("alarm canceled"); 
      isAlarmRunning(); 
     } 
public boolean isAlarmRunning() { 
    Intent intentToCheck = new Intent(getApplicationContext(),AlarmReciever.class); 
    boolean alarm = PendingIntent.getBroadcast(getApplicationContext(), 0, intentToCheck, 
      PendingIntent.FLAG_NO_CREATE) != null; 
    FM.Write("alarm = "+alarm); 
    if (!alarm) { 
     return false; 
    } 
    else 
     return true; 
} 

ありがとう!両方の機能

PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0,  intent, PendingIntent.FLAG_UPDATE_CURRENT); 

答えて

1

使用これはどのようにアラームがまだあることを確認していますか?アラームを停止するには、同じPendingIntent(同じインテント、同じフラグ)を使用する必要があります。ところで、isAlarmRunning()メソッドは、PendingIntentが存在するかどうかを確認します。登録されているアラームと同じではありません。アラームが削除されても、trueを返す可能性があります。

+0

が機能しませんでした。まだ同じ... –

+0

は0の代わりにいくつかの数字があります1234 –

+0

これを確認する前にアプリをアンインストールしました –

1

+0

どうすればアラームが登録されているかどうかを確認できますか? –

+0

できません。そのためのAPIはありません。あなたはそれをキャンセルするか、またはそれを上書きします。 –

+0

@Nikolarに同意します。これはまさに私と一緒に起こっていることです。 – Sid