Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешенияAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешения

Сообщение Anonymous »

После диалогового окна разрешения разрешения. Я перехожу к фрагменту камеры, но я вижу только черный экран.
Я предполагаю, что проблема в том, что навигация возникает слишком быстро до frag.onrequestpermissionsresult (запрос кодирования, разрешения, грантрессфуст) < /code> передает разрешения. Я попытался использовать новый Luncher - это не работает причина (я использую NavController от Lazy {findNavController (r.id.nav_host)} Так что навигация не работает внутри пусковой установки. Я пытался использовать CamerapermissionViewModel с vasereOnce () на разрешении, вы все еще показываете, что вы все еще показываете, что вы все еще показываете, что у меня есть. заранее!
meaMactivity.kt Config: < /p>
@SuppressLint("MissingSuperCall")
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array,
grantResults: IntArray
) {
if (requestCode == REQUEST_CODE_MAIN_ACTIVITY) {
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
alertDialog = localizationProvider.showManualLocationPickerDialog(
this,
REQUEST_CODE_MAIN_ACTIVITY
)
return
}
}
if (requestCode == cameraPermissionProvider.requestCode) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
navigateToCamera()
} else {
showCameraDialogPermission()
}
}

//super.onRequestPermissionsResult(requestCode, permissions, grantResults)
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host) as? NavHostFragment
navHostFragment?.childFragmentManager?.fragments?.forEach { frag ->
frag.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
}

inside mainActivity using this extention:
fun LiveData.observeOnceAfterInit(owner: LifecycleOwner, observer: (T) -> Unit) {
var firstObservation = true

observe(owner, object : Observer {
override fun onChanged(value: T) {
if (firstObservation) {
firstObservation = false
} else if (value != null) {
removeObserver(this)
observer(value)
}
}
})
}

private fun goNextWithCamera(next: () -> Unit) {
if (cameraPermissionProvider.isPermissionGranted()) {
next()
} else {
cameraPermissionProvider.requestPermission(this)
}
}
< /code>
camerapermissionprovider.kt
fun isPermissionGranted(): Boolean {
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
application.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
} else {
ContextCompat.checkSelfPermission(
application.applicationContext,
Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED
}
}

fun requestPermission(activity: Activity) {
ActivityCompat.requestPermissions(
activity,
arrayOf(Manifest.permission.CAMERA),
requestCode
)
}
}



Подробнее здесь: https://stackoverflow.com/questions/796 ... knowledged
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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