再起動後に受信機を自動的に継続させる方法はありますか?
残念だけど違う。電話がオフになると、システムはすべての保留中のインテントを破棄します。
問題を解決するには、 をフィルタリングしandroid.intent.action.BOOT_COMPLETED
て、BroadcastReceiver
呼び出されたデバイスの起動を行う必要があります。その後、必要なすべてのアラームを再スケジュールできます。
マニフェストで次のようなもの:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name=".broadcasts.InitReceiver"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
ユーザーがあるタイムゾーンから別のタイムゾーンに移動している場合でも、アラームを機能させたいと思うかもしれませんTIME_SET
。TIMEZONE_CHANGED
そして、放送用にこんなもの。
public class YourBroadcastReceiverName extends BroadcastReceiver {
private AlarmManagerFacade alarmManager;
@Override
public void onReceive(Context context, Intent intent) {
// Retreive data related to alarms
Cursor cursor = context.getContentResolver().query(Alarm.CONTENT_URI, null,
Alarm.COLUMN_ACTIVE + " = ? ",
new String[] { String.valueOf(1) }, "");
if (cursor.moveToFirst()) {
// Schedule all the active alarms.
alarmManager = new AlarmManagerFacade(context);
do {
// TODO : Schedule alarm according to data in cursor.
} while (cursor.moveToNext());
}
cursor.close();
}
}
(このコードは私のアプリの 1 つからのものです。一部のオブジェクトは Android SDK で使用できない場合があります。)
すべてのアラームを再スケジュールできるようにするには、アラームをどこかに保存する必要があります。
たとえば、独自のContentProviderを作成できます。
- CursorAdapterウィジェットのおかげで、他の Android コンポーネントとうまく連携します。
- これは最も簡単な解決策ではありませんが、Android のガイドラインに従いたい場合に最適な方法です。
SharedPreferencesを使用するなど、アラームを保存するための他のより簡単な代替手段があるかもしれません。
- 使い方は簡単です。
- ただし、複数のアラームを使いやすい方法で保存するには、ハックする必要があります。
最後の代替手段は、情報を含むオブジェクトを作成し、それをシリアル化し、SD カードにファイルとして保存することです。
- それは醜く、柔軟性がありません。
- しかし、実装するのはそれほど難しくありません...
さまざまなストレージ オプションを詳しく調べたい場合は、こちらのドキュメントで読むことができます: http://developer.android.com/guide/topics/data/data-storage.html
これがすべてあなたのお役に立てば幸いです。:)