Невозможно получить разрешения на грубое и прекрасное место на Android, Target SDK 33Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Невозможно получить разрешения на грубое и прекрасное место на Android, Target SDK 33

Сообщение 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)
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... get-sdk-33
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»