#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 в качестве поставщика местоположения.