android - Pixel 手机上的 checkLocationSettings 返回 RESOLUTION_REQUIRED

标签 android google-play-services

我有三部 Pixel 手机,它们在检查 fragment 中的位置权限时都显示此行为。

当 wifi 关闭时,checkLocationSettings 方法中的 result.isSuccessful() 总是返回 false。我真的不明白,就好像 Pixel 不知道如何在没有 wifi 的情况下处理位置请求。

请注意,如果您打开扫描 wifi 网络,它将再次开始正常工作。

这是我的应用程序采用的过程:

1) Activity 请求位置权限并授予它们。 (这一切正常)。

2) 稍后运行的 fragment 检查授予的位置权限并请求位置更新。

fragment 代码:

locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(UPDATE_INTERVAL);
locationRequest.setFastestInterval(FASTEST_INTERVAL);

LocationSettingsRequest.Builder builder = new 
LocationSettingsRequest.Builder().addLocationRequest(locationRequest);
SettingsClient client = LocationServices.getSettingsClient(activity);
Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());

task.addOnCompleteListener(result -> {
       if (result.isSuccessful()) {
           fusedLocationClient.requestLocationUpdates(
           ...
       }else{
           //Always end up here
           //com.google.android.gms.common.api.ResolvableApiException: 6: RESOLUTION_REQUIRED
           Exception locExcep = result.getException();
           Log.e(TAG, "startLocationUpdates failed: ", locExcep);
       }

适用于我可以使用的所有其他手机。所有代码几乎相同:

https://developer.android.com/training/location/change-location-settings.html

https://developer.android.com/training/location/receive-location-updates

错误是:
com.google.android.gms.common.api.ResolvableApiException: 6: RESOLUTION_REQUIRED
        at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source:3)
        at com.google.android.gms.common.internal.zai.zaf(Unknown Source:2)
        at com.google.android.gms.common.internal.zaj.onComplete(Unknown Source:6)
        at com.google.android.gms.common.api.internal.BasePendingResult.zaa(Unknown Source:172)
        at com.google.android.gms.common.api.internal.BasePendingResult.setResult(Unknown Source:131)
        at com.google.android.gms.common.api.internal.BaseImplementation$ApiMethodImpl.setResult(Unknown Source:36)
        at com.google.android.gms.internal.location.zzbc.zza(Unknown Source:2)
        at com.google.android.gms.internal.location.zzar.dispatchTransaction(Unknown Source:11)
        at com.google.android.gms.internal.location.zzb.onTransact(Unknown Source:22)
        at android.os.Binder.execTransact(Binder.java:731)

最佳答案

您使用的是哪个版本的 Android Gradle 插件?尝试使用 com.android.tools.build:gradle:3.3.0-alpha11 。

如果这不能解决您的问题,您能否提供以下详细信息:

  • 它是否 100% 发生在 Pixel 设备上?
  • 请提供发现此问题的像素设备列表和 Android 版本信息
  • 示例应用程序和重现此问题的步骤。
  • 关于android - Pixel 手机上的 checkLocationSettings 返回 RESOLUTION_REQUIRED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56171276/

    相关文章:

    java - 让我的 Android Activity 都可以访问的管理器类处理缓存/数据的基本方法?

    java - 无法在 onReceivedError() 中加载新的 WebView

    google-play - Google 收据验证 - 401 - permissionDenied

    android - 如何在 android 中使用 Google 视觉 API 检测眨眼?

    android - 附近的连接没有 ConnectionResponseCallback

    java - 我的语法有什么问题?

    java - 通过数组随机化坐标

    android - TravisCI Android 构建失败

    java - Google Play 位置 未连接。调用 connect() 并等待 onConnected() 被调用

    Android 定位与 Google Play 服务