0

私のアプリケーションの主なアクティビティには、ユーザーが日付と時間を挿入してボタンを押す2つのテキストフィールドがあります。ボタンの開始をクリックすると、ユーザーが挿入した日時にアラームを設定するbroadcastReceiverクラスのメソッドsetProgrammedTimerが呼び出され、この日時にアプリケーションはアクティビティDIAL電話を呼び出します。しかし、私は1つの日付と1つの時間を挿入し、私は開始ボタンをクリックし、私は新しい日付と時間を挿入し、私は開始ボタンをクリックした後、アプリケーションは2番目のアラームを実行します。両方のアラームを実行するにはどうすればよいですか?アプリケーションの存続期間外に時間ベースの操作を実行するために複数のアラームをAndroidで設定する方法はありますか?

この主な活動上のボタンスタートコード:

start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      year = Integer.valueOf(yearT.getText().toString()); 
      month = Integer.valueOf(monthT.getText().toString()); 
      day = Integer.valueOf(dayT.getText().toString()); 
      hour = Integer.valueOf(hourT.getText().toString()); 
      minute = Integer.valueOf(minuteT.getText().toString()); 
     timer.setProgrammedTimer(context,year,month,day,hour,minute); 

これはbroadcastReceiverコードです:

public class TimerBroadcast extends BroadcastReceiver { 

@Override 
public void onReceive(final Context context, Intent intent) { 

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock"); 
    wl.acquire(); 
    Intent callIntent = new Intent(Intent.ACTION_DIAL); 
    callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(callIntent); 
    wl.release(); 

} 

public void setProgrammedTimer(Context context,int year, int month,int day, int hour, int minute){ 

    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context,TimerBroadcast.class); 
    PendingIntent pi = PendingIntent.getBroadcast(context,0,intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    Calendar cal = Calendar.getInstance(); 
    cal.setTimeInMillis(System.currentTimeMillis()); 
    cal.set(Calendar.YEAR,anno); 
    cal.set(Calendar.MONTH,mese-1); 
    cal.set(Calendar.DAY_OF_MONTH,giorno); 
    cal.set(Calendar.HOUR_OF_DAY,ora); 
    cal.set(Calendar.MINUTE,minuti); 
    cal.set(Calendar.SECOND,0); 
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi); 
} 

答えて

0

あなたが最初にキャンセルされた第2のアラームを追加する場合。

PendingIntent pi = PendingIntent.getBroadcast(context,0,intent, PendingIntent.FLAG_CANCEL_CURRENT); 

注FLAG_CANCEL_CURRENT。

+0

このフラグを削除する必要があります。 – paniko

+0

なぜここにお尋ねしますか?自分で試してみてください。 – Okas

関連する問題