Android 9 ResolvableApiException onActivityResult 有 resultCode 0 RESULT_CANCELED
Posted
技术标签:
【中文标题】Android 9 ResolvableApiException onActivityResult 有 resultCode 0 RESULT_CANCELED【英文标题】:Android 9 ResolvableApiException onActivityResult has resultCode 0 RESULT_CANCELED 【发布时间】: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 时没有问题,祝你好运 【参考方案1】:我也有同样的问题! 请注意,对我来说,它在禁用“Wi-Fi 扫描”时有效,但不适用于“提高位置准确性”切换。
【讨论】:
感谢您的补充。是的,只有在禁用高精度时才会发生这种情况。以上是关于Android 9 ResolvableApiException onActivityResult 有 resultCode 0 RESULT_CANCELED的主要内容,如果未能解决你的问题,请参考以下文章
Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错
Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错