SettingsClient.checkSettings始终失败,状态为LocationSettingsStatusCodes.RESOLUTION_REQUIRED

问题描述 投票:3回答:1

我正在应用程序中使用LocationServices。在使用位置服务之前,我试图验证具有所需设置的位置是否为ON,但是我面临的问题是SettingsClient.checkSettings始终为failing。请查看我的LocationRequestLocationSettingRequest构建器:

LocationRequest

 mLocationRequest = LocationRequest()
        mLocationRequest.interval = interval
        mLocationRequest.fastestInterval = interval

        Log.v(TAG, "distance => $distance")
        if(distance > 0) {
            mLocationRequest.smallestDisplacement = distance
        }

        mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY

        buildLocationSettingsRequest()

LocationSettingRequestBuilder

private fun buildLocationSettingsRequest() {
        val builder = LocationSettingsRequest.Builder()
        builder.addLocationRequest(mLocationRequest)
        mLocationSettingsRequest = builder.build()

        mSettingsClientInit = true
    }

而且我要求提供checkSettings为>>

mSettingsClient.checkLocationSettings(mLocationSettingsRequest)
                .addOnSuccessListener(this, object : OnSuccessListener<LocationSettingsResponse> {

                    override fun onSuccess(locationSettingsResponse: LocationSettingsResponse) {
                        Log.i(TAG, "LocationManager: All location settings are satisfied.");
                        mLocationCallback?.let {
                            fusedLocationClient?.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper());
                        }
//                        updateUI();
                    }
                })
                .addOnFailureListener(this, object : OnFailureListener {
                    override fun onFailure(e: Exception) {
                        Log.v(TAG, "Request PErmission failure");
                        var statusCode = (e as ApiException).getStatusCode()
                        when (statusCode) {
                            LocationSettingsStatusCodes.RESOLUTION_REQUIRED -> {
                                try {
                                    // Show the dialog by calling startResolutionForResult(), and check the
                                    // result in onActivityResult().
                                    var rae = e as ResolvableApiException;
                                    rae.startResolutionForResult(this@BaseLocationActivity, REQUEST_CHECK_SETTINGS);
                                } catch (sie: IntentSender.SendIntentException) {
                                    Log.v(TAG, "PendingIntent unable to execute request.");
                                }
                            }
                            LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE -> {
                                mRequestingLocationUpdates = false;
                                Log.v(TAG, "Settings change unavailable.");
                            }

                        }
                    }
                }
                )

始终是onFailureaddOnFailureListener。谁能帮助我,这可能是什么问题?此设置对话框显示“确定”以启用设置,我按“确定”,再次出现与onFailure回调相同的对话框。

[发生在某些设备上,而不是在所有设备上。

我正在应用程序中使用LocationServices。在使用位置服务之前,我试图验证具有必需设置的位置是否为ON,但是我面临的问题是SettingsClient ....

android kotlin google-play-services android-location
1个回答
0
投票

您好,请遵循此代码来解决您的问题,我在此类的帮助下添加了GPSUtils类,您可以轻松管理GPS。

© www.soinside.com 2019 - 2024. All rights reserved.