Size: a a a

2021 June 14

A

Aslan in Android KZ
object PermissionUtil {

   fun isGranted(context: Context, permission: String): Boolean =
       Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
               ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED

   fun getPermissionStatus(fragment: Fragment, permission: String): PermissionStatus {
       if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
           return PermissionStatus.GRANTED
       }
       return when {
           fragment.requireContext()
               .checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED -> PermissionStatus.GRANTED
           fragment.shouldShowRequestPermissionRationale(permission) -> PermissionStatus.DENIED
           else -> PermissionStatus.PERMANENTLY_DENIED
       }
   }
}
источник

A

Aslan in Android KZ
override fun onPermissionsResult(status: Map<String, PermissionStatus>, payload: Any?) {
       Timber.tag("Hello").d("onPermissionsResult")
       val allPermissionGranted = status.all { it.value == PermissionStatus.GRANTED }

       if (allPermissionGranted) {
           Timber.tag("Hello").d("allPermissionGranted")
           findMyLocation()
       }
   }

   private fun askPermission() {
       val permissions = listOf(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION)
       if (!permissions.all { PermissionUtil.isGranted(requireContext(), it) }) {
           PermissionDialog
               .requestPermissions(
                   this,
                   listOf(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION)
               )
       } else {
           findMyLocation()
       }
   }
источник

A

Aslan in Android KZ
Как-то так
источник

DA

Daniyar Amangeldy in Android KZ
А вот чисто в теории, если request code будет не тот или пустой permission, твой диалог закроется?
источник

DA

Daniyar Amangeldy in Android KZ
Я вижу что тут есть условие if (requestCode == PERMISSION_REQUEST_CODE && permissions.isNotEmpty()) {}
А то что за этими условиямии обработки кажется нет
источник

A

Aslan in Android KZ
Поидее должна закрыться
источник

A

Aslan in Android KZ
Возможно и нет, за проверю
источник

DA

Daniyar Amangeldy in Android KZ
Ты можешь через LayoutInspector посмотреть
источник

DA

Daniyar Amangeldy in Android KZ
Но это 100% PermissionDialog. Он без UI + cancellable = false
источник

A

Aslan in Android KZ
Почему то 2 вьювки поверх моего накладывается
источник

A

Aslan in Android KZ
Когда даю разрешение, одно исчезает, а другаю остается
источник

A

Aslan in Android KZ
Вроде понял куда копять. Спасибо Даник!
источник

A

Aslan in Android KZ
Хотя уже нашел, в onRequestPermissionsResult приходит как ты сказал, поставил else с логом и туда заходит, и одна вьюшка его походу
источник

DA

Daniyar Amangeldy in Android KZ
👍👍
источник

A

Aslan in Android KZ
Даже нашел почему два диалога вызываются. Короче очень помог Даник! Ты лучше есьже)
источник

DA

Daniyar Amangeldy in Android KZ
2 раза где то вызывался request или lifecycle пересоздавал новый Dialog?
источник

DA

Daniyar Amangeldy in Android KZ
Скажи ответ, я а то гадаю как так 2 диалога вышло 😂😂
источник

A

Aslan in Android KZ
Да все просто
источник

A

Aslan in Android KZ
В вью пейджере у двух фрагментов вызвал в onViewCreated
источник

A

Aslan in Android KZ
И они оба вызвались
источник