Size: a a a

2021 June 14

AB

Alikhan Bakytbek in Android KZ
кажется возможно максимум юзера в настройки сим карт закинуть чтобы он дальше сам отключил
источник

AN

Alibek Nurgaliyev in Android KZ
Океей. Спасибо, Алихан!
источник

KV

Kirill Van in Android KZ
Надо по логам смотреть, где-то краш видемо
источник

J

Just Q in Android KZ
скорее всего ANR какой то
источник

A

Aslan in Android KZ
Крашей нету, в логах все чисто. Локацию находит и само приложение работает (так как в бэкграунде обновляется список в зависимости от моей локаций). Но экран тупо завис, то есть не отвечает на действия пользователя, стоит затемненным как будто там диалоговое окно с параметром cancelable=false, даже назад не нажимается
источник

YN

Yersultan Nadyrmagam... in Android KZ
наверное в ui thread'e вычисления какие-то
источник

A

Aslan in Android KZ
Не, упаси от такого)
источник

A

Aslan in Android KZ
UI-то работает, под затемнением у меня список обновляется
источник

A

Aslan in Android KZ
Его видно, но на мои нажатия никакой реакции
источник

DA

Daniyar Amangeldy in Android KZ
на других девайсах пробовал?
источник

A

Aslan in Android KZ
На 5ти девайсах так
источник

DA

Daniyar Amangeldy in Android KZ
разрешение через что делаешь? по старому или Results API
источник

A

Aslan in Android KZ
LocationServices.getFusedLocationProviderClient(requireActivity())
источник

DA

Daniyar Amangeldy in Android KZ
нет именно runtime permission
источник

A

Aslan in Android KZ
По старому
источник

DA

Daniyar Amangeldy in Android KZ
а в onPermissionResult какая логика есть?
источник

AS

Askar Syzdykov in Android KZ
ага, показать экран затемненный))
источник

AS

Askar Syzdykov in Android KZ
@aslansdu делись кодом, чтоб не гадать)
источник

A

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

A

Aslan in Android KZ
class PermissionDialog : DialogFragment() {

   companion object {
       fun requestPermissions(fragment: Fragment, permissions: List<String>, payload: Any? = null) {
           val allPermissionAreGranted = permissions.all { PermissionUtil.isGranted(fragment.requireContext(), it) }
           if (allPermissionAreGranted) {
               val status = permissions.map { it to PermissionStatus.GRANTED }.toMap()
               (fragment as Callback).onPermissionsResult(status, payload)
           } else {
               show(fragment.childFragmentManager, permissions, payload)
           }
       }

       private fun show(fragmentManager: FragmentManager, permissions: List<String>, payload: Any?) {
           if (fragmentManager.findFragmentByTag(TAG) == null) {
               PermissionDialog()
                   .withArgs(
                       PERMISSIONS_EXTRA to permissions.toTypedArray(),
                       PAYLOAD_EXTRA to payload
                   )
                   .show(fragmentManager, TAG)
           }
       }
   }

   private val permissions by args<Array<String>>(PERMISSIONS_EXTRA, emptyArray())
   private val payload by args<Any?>(PAYLOAD_EXTRA)

   private var isRationaleCache = HashMap<String, Boolean>()

   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       isCancelable = false
       for (permission in permissions) {
           isRationaleCache[permission] = shouldShowRequestPermissionRationale(permission)
       }
       requestPermissions(permissions, PERMISSION_REQUEST_CODE)
   }

   override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
       super.onRequestPermissionsResult(requestCode, permissions, grantResults)
       if (requestCode == PERMISSION_REQUEST_CODE && permissions.isNotEmpty()) {
           val result = mutableMapOf<String, PermissionStatus>()
           permissions.forEachIndexed { index, permission ->
               result[permission] = when {
                   grantResults[index] == PackageManager.PERMISSION_GRANTED -> PermissionStatus.GRANTED
                   shouldShowRequestPermissionRationale(permission) -> PermissionStatus.DENIED
                   isRationaleCache[permission] == true -> PermissionStatus.DENIED
                   else -> PermissionStatus.PERMANENTLY_DENIED
               }
           }
           (parentFragment as Callback).onPermissionsResult(result, payload)
           dismissAllowingStateLoss()
       }
   }

   interface Callback {
       fun onPermissionsResult(status: Map<String, PermissionStatus>, payload: Any?)
   }
}
источник