ActivityResultContract<I, O>
среди прочего там и упрощенная работа с разрешениями RequestPermission extends ActivityResultContract<String, Boolean>
в андроид доке предлагается уебанский пример как хендлить результаты - типа делаешь проперти в хосте (активити или фрагменте например) и ждешь там результат (O)
но прикол в том что проперти надо регистрировать раньше чем какая либо логика началась на экране - иначе крашится
в итоге выходит что этот метод нихуя не помогает - при возвращении к колбек в хосте всеравно есть проблема "а какую кнопку то нажали?"
может я чего то упускаю? или они просто ничего не решили этой новой апишкой?
т.е. как раньше я где то как то запоминал "какую кнопку нажали" так и сейчас всё тоже самое с этой апихой?
По моему нормальное решение, у меня все хорошо работает. Походу вы, что-то не так делаете.
я и не сказал что не работает
Я так делаю: Инициализация лончера и обработка результатов private val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { if (it["android.permission.READ_EXTERNAL_STORAGE"] == true && it["android.permission.WRITE_EXTERNAL_STORAGE"] == true) refreshData() } Запрос requestPermissionLauncher.launch(arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE)) Читабельность так себе, могу скрином кинуть, если что
я вот позвонить хочу, у меня две кнопки А и Б надо бы проверить разрешения - окей - проверяю но в момент возврата, при удачной выдаче разрешения - надо сразу звонить, не ждать пока еще раз юзер нажмет. собсно - к моменту возврата в колбек - надо уже заранее знать "какую кнопку нажали", ну или превратив это в "какой то номер телефона". ну так и вопрос - эта новая апишка позволяет как то stateless гонять туда-сюда в интентах эту инфу а не запоминать/сериализовать это в хостах?
Обсуждают сегодня