почему на устройствах отображается «местоположение не может быть определено»?

#android #kotlin

#Android #kotlin

Вопрос:

Код отлично работает в Android studio. Физические устройства (несколько, с разрешенным всплывающим окном, отображаются в настройках), это не так.

Когда я запускаю его как внутренний тест на своем устройстве (через Google Play Store), загружается действие map, но оно пустое, и когда я выполняю метод on click в рамках этого действия, в нем указывается, что мое местоположение не может быть определено.

 <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  

Я упускаю что-то очевидное здесь?

 override fun onMapReady(googleMap: GoogleMap) {
    mMap = googleMap

    locationManager = this.getSystemService(Context.LOCATION_SERVICE) as LocationManager
    locationListener = object : LocationListener {
        override fun onLocationChanged(p0: Location) {
            updateMap(p0)
        }

        override fun onStatusChanged(s: String, i: Int, bundle: Bundle) {}
        override fun onProviderEnabled(s: String) {}
        override fun onProviderDisabled(s: String) {}
    }
    if (ContextCompat.checkSelfPermission(
            this,
            Manifest.permission.ACCESS_FINE_LOCATION
        ) != PackageManager.PERMISSION_GRANTED
    ) {
        ActivityCompat.requestPermissions(
            this,
            arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
            1
        )
    } else {
        locationManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER,
            5000,
            100f,
            locationListener
        )
        if (locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER) != null) {
            val lastKnownLocation =
                locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
            updateMap(lastKnownLocation!!)
        }
    }
  

Любая помощь новичку (любителю) будет оценена по достоинству!

Заранее спасибо — Сэм.

Ответ №1:

чтобы включить отображение вашего текущего местоположения, вы должны установить для параметра «Мое местоположение» значение true после проверки предоставленного разрешения пользователя.

 if (ContextCompat.checkSelfPermission(
            this,
            Manifest.permission.ACCESS_FINE_LOCATION
        ) == PackageManager.PERMISSION_GRANTED
    ){
// permission here is granted
mMap.setMyLocationEnabled(true)
}
  

Комментарии:

1. Ты бриллиант. Позвольте мне попробовать сейчас.

2. хорошо, итак, я вижу себя на карте (потрясающее спасибо: D), но когда я нажимаю кнопку onclick, она по-прежнему указывает, что не может определить местоположение? странно, правда?

3. Все еще не уверен, что именно происходит. Оно показывает мою позицию на экране, но LocationManager.getLastKnownLocation(LocationManager. GPS_PROVIDER возвращает значение null при использовании на устройстве

4. привет, приятель, ты запрашиваешь PRIORITY_HIGH_ACCURACY для включения GPS?

5. убедитесь, что вы запросили пользователя включить GPS, прежде чем пытаться получать обновления местоположения, поскольку вы используете GPS в качестве поставщика местоположения.