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'”?

Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错

Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错

Android设计中的.9.png图片

我的 Android 应用程序不支持 Android 版本 9

Android Studio 点9 图