FusedLocationProviderClient всегда возвращает false в обратном вызове onLocationAvailability для Sony Xperia Z2 - PullRequest
0 голосов
/ 11 октября 2018

FusedLocationProviderClient всегда возвращает false в обратном вызове onLocationAvailability для Sony Xperia Z2.Разрешения предоставлены, местоположение включено.В настройках местоположения настроить вариант использования Wi-Fi, сети и GPS.Все отлично работает на эмуляторе, Samsung, BQ, Nexus, Xiaomi.Версии ОС от 6 до 8. Но на Sony (andorid 6.0.1) у меня такая проблема.Есть идеи ?Я закончил

Обратный звонок

private val mUserLocationCallback = object : LocationCallback() {

    override fun onLocationAvailability(locationAvailability: LocationAvailability?) {
        super.onLocationAvailability(locationAvailability)
        val isAvalable = locationAvailability?.isLocationAvailable ?: false
        if (!isAvalable) {
            mLocationHelperListener.onLocationUnAvailable()
            mDefaulLocation?.let { mLocationHelperListener.onLocationHelperChanged(it) }
            stopLocationUpdates()
        }
    }

    override fun onLocationResult(locationResult: LocationResult?) {

        if (locationResult != null) {
            for (location in locationResult.locations) {
                mPreferences?.lastLatitude = location.latitude.toFloat()
                mPreferences?.lastLongitude = location.longitude.toFloat()
                mLocationHelperListener.onLocationHelperChanged(location)
                stopLocationUpdates()
                break
            }
        }

    }
}

Запрос

val locationRequest = LocationRequest.create()
                    .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
                    .setInterval(UPDATE_INTERVAL)
                    .setFastestInterval(FASTEST_INTERVAL)
                    .setSmallestDisplacement(SMALLEST_DISTANCE)


            // Create LocationSettingsRequest object using location request
            val builder = LocationSettingsRequest.Builder()
            builder.addLocationRequest(locationRequest)
            val locationSettingsRequest = builder.build()

            val settingsClient = LocationServices.getSettingsClient(mContext)
            val task = settingsClient.checkLocationSettings(locationSettingsRequest)
            task.addOnSuccessListener { locationSettingsResponse: LocationSettingsResponse? ->
                mFusedLocationClient.requestLocationUpdates(locationRequest, mUserLocationCallback, null)
            }
            task.addOnFailureListener { exception: Exception ->
                mLocationHelperListener.onLocationUnAvailable()
            }

Ответы [ 2 ]

0 голосов
/ 21 января 2019

У меня была очень похожая проблема;перезапуск моего телефона решил проблему.Я тестировал на нескольких устройствах, но единственным проблемным устройством был ZTE Maven Z812.

0 голосов
/ 12 октября 2018

Я думаю, что найдено решение.Я думаю, что мое решение будет работать для других устройств с такой же проблемой.Итак ... Зайдите в список приложений, найдите Google PLay Services.Открытые разрешения.Если разрешение «Местоположение» отключено - включите его.Если такого элемента нет, выключите ВСЕ элементы и включите его снова.Вы должны увидеть диалоговое окно для разрешения местоположения.Включите его и вуаля, теперь все работает в моем случае.

...