【发布时间】:2020-05-06 19:12:48
【问题描述】:
我的应用程序以 API 28 为目标。我有一个前台服务发送位置更新。
当满足以下条件时,应用停止发送位置:
- 在 Android 10 上运行
- 应用在后台
- 位置权限被选为“仅在使用应用时允许”
运行中
adb shell dumpsys 包 packageName
我看到了
android.permission.ACCESS_BACKGROUND_LOCATION:grant=false
从文档看来,“android.permission.ACCESS_BACKGROUND_LOCATION”权限是向后兼容的。
我该如何解决这个问题?有没有办法禁用三态权限请求?
【问题讨论】:
-
清单中的
<service>上是否有android:foregroundServiceType="location"? developer.android.com/about/versions/10/privacy/… -
我看到一个 lint 错误
unknow attribute android:foregroundServiceType并且应用程序崩溃 -
关于 Lint 投诉,您的
compileSdkVersion应设置为 29。就崩溃而言,请检查 Logcat。您可能需要查看 the background location documentation 以了解如何在 Android 10 上最好地处理此问题。 -
如果您的应用以 API28 为目标,您必须选择“始终允许”才能在后台接收位置更新。然后将授予 ACCESS_BACKGROUND_LOCATION。而且,如果你只想要两个状态,那么你需要将目标 SDK 更改为 29,在 Manifest 中启用 foregroundService=location 并省略 ACCESS_BACKGROUND_LOCATION。
-
@CommonsWare 谢谢你解决了这个问题
标签: android android-location android-10.0