【问题标题】:Android 9 ResolvableApiException onActivityResult has resultCode 0 RESULT_CANCELEDAndroid 9 ResolvableApiException onActivityResult 有 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 时没有问题,祝你好运

标签: android android-9.0-pie google-location-services


【解决方案1】:

我也有同样的问题! 请注意,对我来说,它在禁用“Wi-Fi 扫描”时有效,但不适用于“提高位置准确性”切换。

【讨论】:

  • 感谢您的补充。是的,只有在禁用高精度时才会发生这种情况。
猜你喜欢
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多