Size: a a a

2020 August 11

i

ilya the 大佬 in Android Guards
Rtem
Так и проверяй заново есть он или нет. В том и смысл
сценарий такой:
1) пермишин просто отсутствует:
объясняем пользователю почему он нужен (диалогом с кнопкой ок) и при нажатии ок показывает андроидовский пермишин диалогом. Здесь всё ок.
2) пользователь нажал больше не спрашивать:
объясняем пользователю почему пермишен нужен (диалогом с кнопками перейти в настройки и продолжить) и при нажатии на кнопку с настройками переходим в настройки. Здесь тоже всё ок.
3) пользователь выбрал only this time, вышел из приложения, обратно зашел в приложение:
Ожидаемый результат: показывам запрос на пермишн еще раз.
Фактический результат: из-за shouldShowPermissionRational мы думаем, что пользователь нажал больше не спрашивать и показываем ему диалог из пункта 2
источник

R

Rtem in Android Guards
Ну да, ты все верно говоришь, с нового андройда ты больше не можешь полагаться на rational. Чекай каждый раз.
источник

Sergey λ in Android Guards
если пермишена нет, то почему не начинать флоу с начала?
источник

Sergey λ in Android Guards
если юзер отклонил запрос, использовать решенал
источник

Sergey λ in Android Guards
но со старта приложения не нужно костылять если пермишена нет
источник

i

ilya the 大佬 in Android Guards
Sergey λ
но со старта приложения не нужно костылять если пермишена нет
да, он не со старта на самом деле спрашивается, это я просто так написал. спрашиваем мы только когда на нужную фичу пользователь переходит
источник

Sergey λ in Android Guards
с OneTimePermission выбором, система его отберет только после смерти процесса, а это по сути новый флоу.
источник

i

ilya the 大佬 in Android Guards
Rtem
Ну да, ты все верно говоришь, с нового андройда ты больше не можешь полагаться на rational. Чекай каждый раз.
надеялся, что ActivityCompat что-то предоставляет, чтобы мы узнали что определенная пермишина выбрана only this time ((((
ну ясно, спасибо
источник

Sergey λ in Android Guards
ilya the 大佬
надеялся, что ActivityCompat что-то предоставляет, чтобы мы узнали что определенная пермишина выбрана only this time ((((
ну ясно, спасибо
оно не нужно
источник

Sergey λ in Android Guards
а что если пользователь дал добро, а потом в настройках системи отклонил
источник

i

ilya the 大佬 in Android Guards
Sergey λ
с OneTimePermission выбором, система его отберет только после смерти процесса, а это по сути новый флоу.
да я именно отрабатываю кейс когда пользователь выбрал only this time и перезапустил приложение и зашел на фичу. из-за shouldShowPermissionRational я ему неправильный диалог теперь показываю. поэтому у меня есть необходимость узнать является ли определенный пермишин one time permission
источник

Sergey λ in Android Guards
showDialog = no_permission + rationale_true
newFlow = no_permission + rationale_false
источник

Sergey λ in Android Guards
а на андроид 10 есть еще Only when app is using )
источник

i

ilya the 大佬 in Android Guards
Sergey λ
showDialog = no_permission + rationale_true
newFlow = no_permission + rationale_false
у меня два диалога, вот так сейчас
диалог с кнопкой ок = no_permission + rationale_true
диалог с кнопкой перейти в настройки = no_permission+ rationale_false
источник

i

ilya the 大佬 in Android Guards
соответсвенно при one time permission  я получаю no_permission + rationale_false, и тоже думаю, что пользователя надо отправлять в настройки выдавать приложению доступ на локацию
источник

Sergey λ in Android Guards
> диалог с кнопкой перейти в настройки = no_permission+ rationale_false
а почему rationale_false
источник

i

ilya the 大佬 in Android Guards
Sergey λ
> диалог с кнопкой перейти в настройки = no_permission+ rationale_false
а почему rationale_false
когда пользователь выбирает Dont’ ask again мы получаем rationale_false
источник

Sergey λ in Android Guards
если в настройки нужно отправлять только после перманентного бана
источник

Sergey λ in Android Guards
я понял, да этот флоу похож на Deny permission
источник

Sergey λ in Android Guards
предлагаю упростить флоу себе и юзеру, просто оставить на UI кнопку grant access или что-то подобное в случае когда пермишена нет, но юзер оказался внутри этого флоу.
мы так сделали, потому и проблем не возникло
источник