不允许后台执行。 Android O pendingintent
问题描述:
我有一个服务,计划一个pendingintent开始我的通知。不过,由于Android O我得到这个错误。我做了一些研究,并偶然发现了context.registerReceiver
,但这似乎不能解决问题。不允许后台执行。 Android O pendingintent
错误:
W/BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_ADDED dat=package:my.great.package flg=0x4000010 (has extras) } to com.google.android.googlequicksearchbox/com.google.android.apps.gsa.googlequicksearchbox.GelStubAppWatcher
```
我的PendingIntent:
Intent myNotification = new Intent("services.notifications.Notification");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, (int) (Math.random() * Integer.MAX_VALUE), myNotification, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
alarmManager.setExact(AlarmManager.RTC_WAKEUP, day.getTimeInMillis(), pendingIntent);
我的通知:
public class Notification extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.registerReceiver(this, new IntentFilter());
try {
WakeLock wakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE)).newWakeLock(1, "NotificationWakeLock");
wakeLock.acquire(10000);
try {
scheduleNotification(context, intent);
} finally {
wakeLock.release();
}
} catch (NullPointerException e) {}
}
}
答
我加入了前台的服务解决它:
Intent test = new Intent(this, NotificationService.class);
startForegroundService(test);
这将显示通知,告知我的应用程序正在前台运行。
并通过我的服务的OnCreate添加此:
startForeground(100, new NotificationCompat.Builder(this).build());
解决了这个问题,将在以后添加的解决方案 – Jason
你是怎么做到这一点? – NinjaCoder