0

タスクスケジューラを作成しようとしています。今のところ、スケジュールされたブロードキャストが受信されたら、Toast メッセージをポップアップさせたいだけです。だから私はこのBroadcastReceiverを持っています:

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        int group_id = intent.getIntExtra("SELECTED_GROUP", 0);
        Toast.makeText(context, "Broadcast received. Selected group ID: "+group_id, 
            Toast.LENGTH_LONG).show();
    }
}

これは、私の AndroidManifest ファイルにあるものです。

<receiver android:name="com.ikmedia.smscheduler.receivers.AlarmReceiver">
    <intent-filter >
        <action android:name="com.mysite.myapp.sendSchedule"/>
    </intent-filter>
</receiver>

私のアクティビティでは、ユーザーが [保存] ボタンを押したときに次のようになります。

Calendar calendar_schedule_time = Calendar.getInstance();
calendar_schedule_time.set(selected_year, selected_month, selected_day, selected_hour, selected_minute);
Intent intent_scheduler = new Intent();
intent_scheduler.setAction("com.mysite.myapp.sendSchedule");
intent_scheduler.putExtra("SELECTED_GROUP", selected_group_id);
PendingIntent pi_schedule_intent = PendingIntent.getBroadcast(this, Constants.Request_Codes.REQUEST_CODE_SEND_SCHEDULE, intent_scheduler, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarm_manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm_manager.set(AlarmManager.RTC_WAKEUP, calendar_schedule_time.getTimeInMillis(), pi_schedule_intent);

ただし、保存ボタンを押すと、スケジュールされたアラームは表示されませんが、BroadcastReceiver からすぐに応答が返されます。追加のテキストを含むトースト メッセージがポップアップ表示されますが、すぐに表示され、スケジュールがありません。

何故ですか?どうすれば修正できますか?

4

1 に答える 1

0
alarm_manager.set(AlarmManager.RTC_WAKEUP, calendar_schedule_time.getTimeInMillis(), pi_schedule_intent);

上記のステートメントを :- に置き換えます。

alarm_manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + calendar_schedule_time.getTimeInMillis(), pi_schedule_intent);
于 2013-11-06T11:10:48.463 に答える