169 похожих чатов

Гугл давненько выкатил упрощенную работу с activity result в виде

ActivityResultContract<I, O>
среди прочего там и упрощенная работа с разрешениями RequestPermission extends ActivityResultContract<String, Boolean>
в андроид доке предлагается уебанский пример как хендлить результаты - типа делаешь проперти в хосте (активити или фрагменте например) и ждешь там результат (O)
но прикол в том что проперти надо регистрировать раньше чем какая либо логика началась на экране - иначе крашится
в итоге выходит что этот метод нихуя не помогает - при возвращении к колбек в хосте всеравно есть проблема "а какую кнопку то нажали?"
может я чего то упускаю? или они просто ничего не решили этой новой апишкой?
т.е. как раньше я где то как то запоминал "какую кнопку нажали" так и сейчас всё тоже самое с этой апихой?

4 ответов

22 просмотра

По моему нормальное решение, у меня все хорошо работает. Походу вы, что-то не так делаете.

Konstantin-dmz9 Автор вопроса

я и не сказал что не работает

Я так делаю: Инициализация лончера и обработка результатов 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)) Читабельность так себе, могу скрином кинуть, если что

Konstantin-dmz9 Автор вопроса

я вот позвонить хочу, у меня две кнопки А и Б надо бы проверить разрешения - окей - проверяю но в момент возврата, при удачной выдаче разрешения - надо сразу звонить, не ждать пока еще раз юзер нажмет. собсно - к моменту возврата в колбек - надо уже заранее знать "какую кнопку нажали", ну или превратив это в "какой то номер телефона". ну так и вопрос - эта новая апишка позволяет как то stateless гонять туда-сюда в интентах эту инфу а не запоминать/сериализовать это в хостах?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта