地理围栏数据在转换时为空

jpm*_*jpm 5 android broadcastreceiver kotlin android-geofence

我设置了一个地理围栏,当设备退出半径时,该地理围栏会按预期触发。然而,地理围栏事件完全是空的。

override fun onReceive(context: Context, intent: Intent) {
    val geofencingEvent = GeofencingEvent.fromIntent(intent)
}
Run Code Online (Sandbox Code Playgroud)
  • geofencingEvent.geofenceTransition 为 -1
  • geofencingEvent.triggeringGeofences 为 null
  • geofencingEvent.triggeringLocation 为 null
  • geofencingEvent.hasError() 为 false

这并不奇怪,因为意图也是空的。但是地理围栏触发意图通常从哪里获取数据来帮助 GeofencingEvent.fromIntent() 构建事件?如果意图是空的,会出现什么问题?(没有任何操作,没有额外的内容...意图 uri 如下所示:

intent:#Intent;launchFlags=0x10;component=de.yukiarts.test/.GeofenceBroadcastReceiver;end
Run Code Online (Sandbox Code Playgroud)

我发现这个问题是7年前的,它描述了相同的行为,但没有答案。我非常准确地遵循了这个文档。有什么想法我可能做错了什么吗?

jpm*_*jpm 14

我发现使触发地理围栏时使用的 PendingIntent 可变可以修复此问题!(在 Android >11 的设备上)

val geofencePendingIntent = PendingIntent.getBroadcast(
            context, 0, intent,
            PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
Run Code Online (Sandbox Code Playgroud)