我正在将代码从Android 6迁移到9。
public class AlarmReceiver extends BroadcastReceiver {
private final static String TAG = "Launcher:" + "AlarmReceiver";
private final static long ALARM_INTERVAL = 60 * 1000;
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive");
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
long interval = ALARM_INTERVAL;
Intent intentRun = new Intent("jq.action.RUN_SERVICE_LAUNCHER");
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context.getApplicationContext(), 0, intentRun,
PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + interval, interval,
pendingIntent);
}
在清单中
<receiver android:name="com.android.launcher2.custom.AlarmReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="jq.action.RUN_SERVICE_LAUNCHER" />
</intent-filter>
</receiver>
但是它引发了一个错误,
BroadcastQueue: Background execution not allowed: receiving Intent { act=jq.action.RUN_SERVICE_LAUNCHER flg=0x14 (has extras) } to com.android.launcher/com.android.launcher2.custom.AlarmReceiver