Как завершить процесс авторизации в SimpleUI по PIN?
Создал отдельный процесс авторизации. При старте процесса прописал:
h=[{"action":"run","type":"python","listener":"pin_success","method":"check_pin"}, {"action":"run","type":"set","listener":"pin_cancel","method":"vibrate"}]
hashMap.put("ShowPIN",json.dumps({"header":"Введите ПИН","handlers":h,"block_cancel":True},ensure_ascii=False))
После ввода пина обработчик:
def check_pin(hashMap,_files=None,_data=None):
hashMap.put("toast",hashMap.get("pin"))
if hashMap.get("pin")=="1111":
hashMap.put("beep","")
hashMap.put("ClosePIN","")
#hashMap.put("FinishProcess","")
#hashMap.put("break","")
return hashMap
Как сделать чтобы при удачной авторизации пользователя окно с вводом PIN закрывалось и процесс завершался, если указываю FinishProcess или break без ClosePIN, то не закрывается окно ввода пина, а наоборот закрывается окно ввода пина, но процесс не завершается.
Ответы (3 шт):
Закрытие окна ввода PIN (ClosePIN) — должно отключить окно ввода PIN. Завершение процесса (FinishProcess) — должно завершить текущий процесс
Окно ввода пина - отдельный экран в SimpleUI, поверх вообще всего. Он ждет 4 знака, проверяет (событие pin_success) и тут же проверяет наличие ClosePIN в стеке. Если у вас открыт при этом процесс, он сам по себе (это другая активити). Там FinishProcess должно сработать. break - нет такой команды.
Протестировал. Да, не работает так как надо. ShowPIN задумывалось как защита конфигурации на запуске (как и биометрия). И суть там держать экран открытым чтобы не дать закрыться. Так чтобы защищать конкретный процесс, я об этом не задумывался, но теперь задумался. Он и для процесса эту функцию выполняет - т.е. вы не зайдете на процесс пока не введете правильный пин. Но вот с передачей события на процесс - оно не работает. А тут нужно событие onInput
передавать именно на процесс чтобы на процессе выполнялось FinishProcess
Поэтому будет еще одна команда
ShowPINProcess
именно для процесса, с целью передачи управления на процесс