特定の時間に電話を無音にする Android アプリケーションを作成しようとしています。そのために、このチュートリアルに従ってAlarmManager
との組み合わせを使用しています。複数のアクティビティでメソッドを使用できるように、 を使用してイベントを設定するメソッドを含む別のクラスを使用しています。このクラスのコードは次のとおりです。 BroadcastReceiver
AlarmManager
public class EventScheduler {
public static void schedule(Event event) {
Calendar start = event.getStartTime();
Calendar end = event.getEndTime();
String status = event.getStatus();
Context ctx;
Intent intent = new Intent(ctx, AlarmReceiver.class);
intent.putExtra("start_time", start);
intent.putExtra("end_time", end);
intent.putExtra("status", status);
PendingIntent sender = PendingIntent.getBroadcast();
AlarmManager am = (AlarmManager) getSystemSerivce(ALARM_SERVICE);
}
public static void unschedule(Event event) {
}
}
最初の質問は、インテント オブジェクトの初期化についてです。このメソッドは Activity を拡張しないクラスで定義されているため、コンテキスト ( ctx
) はありませんが、このメソッドは Activity を拡張するクラスで使用されるため、これらのクラスのコンテキストを初期化で使用するにはどうすればよいですか?意図の?
2 番目の質問は、PendingIntent の初期化についてです。PendingIntent.getBroadcast()
は 4 つのパラメーターを受け取ることになっていますが、このメソッドを呼び出すクラスのコンテキストを取得して最初のパラメーターとして使用するにはどうすればよいでしょうか? また、ドキュメントには、2 番目のパラメーターである requestCode が使用されていないと記載されていますが、これは使用できるということ0
ですか?
3 番目の質問は、AlarmManager の初期化についてです。この場合も、ALARM_SERVICE
フィールドはコンテキスト オブジェクトから取得されるため、この場合はどのコンテキスト オブジェクトを使用すればよいでしょうか?