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);
}
このフラグを削除する必要があります。 – paniko
なぜここにお尋ねしますか?自分で試してみてください。 – Okas