1

私はStopAlarmReceiverと呼ばれる 1 つのクラスと別のBootHandlerを持っています。

BootHandlerは、起動前に設定されたアラームを再起動後にリセットします。私の問題は、BootHandlerがアラームを設定するが、解雇されないことです。

マニフェスト ファイルのエントリ。

    <receiver
        android:name="com.sign.android.myscheduler.app.StopAlarmReceiver"
        android:enabled="true"
        android:exported="true" >
    </receiver>

    <receiver
        android:name="com.sign.android.myscheduler.app.BootHandler"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

BootHandler のコード。

AlarmManager mgr= (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, StopAlarmReceiver.class);
PendingIntent pi = PendingIntent.getService(context, 1, i, 0);

long time = sharedPreferences.getLong("Old_time", 0);
Log.e(TAG, "New time: " +new Date(SystemClock.elapsedRealtime() + time));

mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + time, 5000, pi);
4

1 に答える 1

1

マニフェスト は、アラーム用に 1 つ、起動処理用に 1 つの 2 つのレシーバーを記述するだけです。

  <receiver
        android:name="packagename.AlarmReceiver"

        >

    </receiver>

    <!-- Will not be called unless the application explicitly enables it -->
     <receiver android:name="com.avion.contact_app.DeviceBootReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

次の権限を追加します

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

DeviceBootReceiver クラスで、最初にインテント アクションを確認します

@Override
public void onReceive(Context context, Intent intent) {
    SharedPreferences prefs = context.getSharedPreferences(
            "DefaultReminder", context.MODE_PRIVATE);

    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))

    {
//do whatever you want after reboot or fire alarm again
}
}
于 2016-02-11T10:24:07.760 に答える