現在の時刻:AlarmManagerないトリガー私はアンドロイドのアラームアプリを作り、以下のコードを使用して、アラームを設定
Calendar alarm = Calendar.getInstance();
alarm.set(Calendar.YEAR, year1);
alarm.set(Calendar.MONTH, month1);
alarm.set(Calendar.DAY_OF_MONTH, day1);
alarm.set(Calendar.HOUR_OF_DAY, hour1);
alarm.set(Calendar.MINUTE, min1);
alarm.set(Calendar.SECOND, 0);
if(alarm.before(Calendar.getInstance()))
{
alarm.add(Calendar.DATE, 1);
Toast.makeText(getActivity(),"You selected the past time",Toast.LENGTH_SHORT).show();
}
else
{
Intent myIntent = new Intent(getActivity(), MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, alarm.getTimeInMillis(), pendingIntent);
}
すべてが正常に動作しますが、問題はまた、私は現在の日付を選択し、月、年であります現在の時刻には、「過去の時間を選択しました」と表示されます。この問題を解決するには?
あなたは正しいことをやっていますか、あなたは変数、year1、month1などが正しいと確信していますか? – GiuseppeLabanca
@GiuseppeLabancaうん、私は表示するトーストを使用し、正しく表示されます。現在の時刻と現在の日付を選択した場合、なぜ「選択しました...」と表示されるのか分かりません。 –
これは、コードが 'if'文に達するまで何時間も経過しているからです。少なくともミリ秒の範囲で。したがって、 'alarm'と一緒に初期化された' rightNow'に別のカレンダーオブジェクトを使い、それを使ってifの内部を比較することができます。 – Marat