【发布时间】:2019-05-02 12:21:21
【问题描述】:
我在 android 9 上有这种奇怪的行为来进行位置跟踪。基本上,当我关闭高精度位置时,我会得到正确的 ResolvableApiException,但是如果我调用
resolvableApiException.startResolutionForResult(activity, REQUEST_CHECK_SETTINGS)
它显示了一个弹出窗口,这也是正确的。
问题是,如果我按OK 按钮onActivityResult 调用resultCode = 0 这是不正确的,应该用resultCode = -1 调用或相同的resultCode = Activity.RESULT_OK 调用
注意:这只发生在 android 9 上,我在 Pixel 2、One Plus 6 和 Nokia 设备上测试了相同的行为,并且在较旧的 android 版本上它可以正常工作。
另一个奇怪的部分是,如果单击 OK 按钮,它会更改精度设置,但这些设置不会应用于应用程序并且它会再次获得相同的 resolvableApiException,除非我手动转到设置禁用并启用高精度定位模式。
【问题讨论】:
-
我认为显示的弹出窗口是指谷歌位置权限(您可以在手机设置菜单中找到相关选项)。一旦您的手机拥有这些权限,您仍然需要要求用户拥有应用程序本身的位置权限,作为运行时权限。我真的为我的应用设置位置权限而苦苦挣扎,最后我决定使用这个第三方库github.com/googlesamples/easypermissions
-
@NicolaGallazzi 当应用具有位置权限但没有所需的位置精度设置时会发生此异常,例如,如果您的应用需要高精度但您的设置设置为省电。感谢您的评论和链接。
-
我的 api 27 似乎有问题,但是当我更改为 api 28 时没有问题,祝你好运
标签: android android-9.0-pie google-location-services