Я пытаюсь создать приложение в Kotlin, нацеленном на Android SDK 33
Я хочу, чтобы приложение было очень минималистским и простым, и как только пользователь открывает ее, оно имеет карту и сосредоточено на местоположении пользователя (я использую OSM для данных карты). Приложение также должно сохранять журналы NMEA, которые пользователь может просматривать.
Существует также экран, который всплывает, сообщает пользователю, что его местоположение будет отслеживаться при использовании приложения, и если они нажимают «нет», оно закрывает приложение, но если они нажимают «Да», приложение запрашивает разрешение и показывает карту.
, но независимо от того, как я пытаюсь запросить разрешения на местоположение, я никогда не получу «Стипенс», и я не буду voy o, и я не знаю, что я не могу получить. Пользовательский пользователь. есть "android.permission.access_coarse_location" и "android.permission.access_fine_location" на моем манифесте XML. приложение между тестом. Я оставлю оба в примере реже, просто чтобы показать, как я попробовал.class MainActivity : ComponentActivity() {
private val locationPermissionLauncher =
registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()) { perms ->
Timber.d("Requested Foreground location permissions")
if (perms.all { it.value }) {
Timber.d("Foreground location granted")
GNSS().startListeningNmea(this@MainActivity)
} else {
Toast.makeText(this, "Foreground location permissions are required", Toast.LENGTH_LONG).show()
Timber.e("Foreground location permissions are required")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
appContainer = AppContainerImpl(applicationContext)
Timber.plant(DebugTree())
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val locationPermissions = arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
)
fun hasLocationPermissions(): Boolean {
return locationPermissions.all {
checkSelfPermission(it) == PackageManager.PERMISSION_GRANTED
}
}
fun requestLocationPermissions() {
ActivityCompat.requestPermissions(this, locationPermissions, 1001)
}
val map = findViewById(R.id.mapView) as MapView
map.setMultiTouchControls(true)
val drawerLayout = binding.drawerLayout
val layoutConsent = binding.consentLayout
val btnConsentTrue = binding.btnConsentTrue
val btnConsentFalse = binding.btnConsentFalse
btnConsentFalse.setOnClickListener{
finishAndRemoveTask()
}
btnConsentTrue.setOnClickListener {
Timber.i("User consented to location")
if (!hasFineLocationPermissions()) {
Timber.w("Fine location permission missing — requesting")
//requestFineLocationPermissions()
fineLocationPermissionLauncher.launch(fineLocationPermissions)
//temp duplicate to hide the layout, will make into function
if(hasFineLocationPermissions()){
Timber.d("Hiding consent layout")
layoutConsent.visibility = View.GONE
layoutConsent.isEnabled = false
btnConsentFalse.visibility = View.GONE
btnConsentFalse.isEnabled = false
btnConsentTrue.visibility = View.GONE
btnConsentTrue.isEnabled = false
}
} else {
GNSS().startListeningNmea(this@MainActivity)
Timber.d("Hiding consent layout")
layoutConsent.visibility = View.GONE
layoutConsent.isEnabled = false
btnConsentFalse.visibility = View.GONE
btnConsentFalse.isEnabled = false
btnConsentTrue.visibility = View.GONE
btnConsentTrue.isEnabled = false
}
}
// Map stuff
val geoPoint = GeoPoint(
currentLatitude,
currentLongitude
)
val mapController = map.controller
mapController.setZoom(9.0) //TODO: test good zoom level
mapController.setCenter(geoPoint)
}
override fun onDestroy() {
super.onDestroy()
GNSS().stopListeningNmea(this@MainActivity)
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... get-sdk-33
Невозможно получить разрешения на грубое и прекрасное место на Android, Target SDK 33 ⇐ Android
Форум для тех, кто программирует под Android
1759793494
Anonymous
Я пытаюсь создать приложение в Kotlin, нацеленном на Android SDK 33
Я хочу, чтобы приложение было очень минималистским и простым, и как только пользователь открывает ее, оно имеет карту и сосредоточено на местоположении пользователя (я использую OSM для данных карты). Приложение также должно сохранять журналы NMEA, которые пользователь может просматривать.
Существует также экран, который всплывает, сообщает пользователю, что его местоположение будет отслеживаться при использовании приложения, и если они нажимают «нет», оно закрывает приложение, но если они нажимают «Да», приложение запрашивает разрешение и показывает карту.
, но независимо от того, как я пытаюсь запросить разрешения на местоположение, я никогда не получу «Стипенс», и я не буду voy o, и я не знаю, что я не могу получить. Пользовательский пользователь. есть "android.permission.access_coarse_location" и "android.permission.access_fine_location" на моем манифесте XML. приложение между тестом. Я оставлю оба в примере реже, просто чтобы показать, как я попробовал.class MainActivity : ComponentActivity() {
private val locationPermissionLauncher =
registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()) { perms ->
Timber.d("Requested Foreground location permissions")
if (perms.all { it.value }) {
Timber.d("Foreground location granted")
GNSS().startListeningNmea(this@MainActivity)
} else {
Toast.makeText(this, "Foreground location permissions are required", Toast.LENGTH_LONG).show()
Timber.e("Foreground location permissions are required")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
appContainer = AppContainerImpl(applicationContext)
Timber.plant(DebugTree())
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val locationPermissions = arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
)
fun hasLocationPermissions(): Boolean {
return locationPermissions.all {
checkSelfPermission(it) == PackageManager.PERMISSION_GRANTED
}
}
fun requestLocationPermissions() {
ActivityCompat.requestPermissions(this, locationPermissions, 1001)
}
val map = findViewById(R.id.mapView) as MapView
map.setMultiTouchControls(true)
val drawerLayout = binding.drawerLayout
val layoutConsent = binding.consentLayout
val btnConsentTrue = binding.btnConsentTrue
val btnConsentFalse = binding.btnConsentFalse
btnConsentFalse.setOnClickListener{
finishAndRemoveTask()
}
btnConsentTrue.setOnClickListener {
Timber.i("User consented to location")
if (!hasFineLocationPermissions()) {
Timber.w("Fine location permission missing — requesting")
//requestFineLocationPermissions()
fineLocationPermissionLauncher.launch(fineLocationPermissions)
//temp duplicate to hide the layout, will make into function
if(hasFineLocationPermissions()){
Timber.d("Hiding consent layout")
layoutConsent.visibility = View.GONE
layoutConsent.isEnabled = false
btnConsentFalse.visibility = View.GONE
btnConsentFalse.isEnabled = false
btnConsentTrue.visibility = View.GONE
btnConsentTrue.isEnabled = false
}
} else {
GNSS().startListeningNmea(this@MainActivity)
Timber.d("Hiding consent layout")
layoutConsent.visibility = View.GONE
layoutConsent.isEnabled = false
btnConsentFalse.visibility = View.GONE
btnConsentFalse.isEnabled = false
btnConsentTrue.visibility = View.GONE
btnConsentTrue.isEnabled = false
}
}
// Map stuff
val geoPoint = GeoPoint(
currentLatitude,
currentLongitude
)
val mapController = map.controller
mapController.setZoom(9.0) //TODO: test good zoom level
mapController.setCenter(geoPoint)
}
override fun onDestroy() {
super.onDestroy()
GNSS().stopListeningNmea(this@MainActivity)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79784133/cant-get-permissions-for-coarse-and-fine-location-on-android-target-sdk-33[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия