【发布时间】:2018-06-15 16:00:24
【问题描述】:
我正在注册接收地理围栏广播,它在 SDK 25 中运行良好。但在 SDK 27 中,这现在被破坏了。
我知道我无法通过清单文件注册以接收隐式广播,但我正在注册一个特定于类的广播,如下所示:
Intent geofencingIntent = new Intent("GEOFENCE_BROADCAST");
geofencingIntent.putExtra("ID", geofenceId);
geofencingIntent.setClass(context, GeofenceBroadcastReceiver.class);
PendingIntent geofencingPendingIntent = PendingIntent.getBroadcast(context, 1, geofencingIntent, PendingIntent.FLAG_UPDATE_CURRENT);
final Task<Void> geofenceTask = mGeofencingClient.addGeofences(geofencingRequest, geofencingPendingIntent);
但是,我没有收到此广播。
关于为何未收到此“显式”广播以及解决方法的任何建议。即使应用未运行或未激活,接收广播也很重要。
我也无法理解删除此功能背后的逻辑。是的,它是通过防止应用程序不必要地唤醒来节省电池。但是在应用程序未运行时能够接收广播对我来说似乎是一个非常重要的功能。并且鼓励作业调度,至少只能设置为 15 分钟间隔,这似乎相当受限制。
我已检查以下答案,不认为这是重复的: Android 8.0 Oreo AlarmManager with broadcast receiver and implicit broadcast ban
Lifetime of BroadcastReceiver with regard to Android O changes
谢谢。
【问题讨论】:
-
我问了一个类似的问题,但还没有答案stackoverflow.com/questions/50820154/…
标签: android broadcastreceiver android-geofence