У меня есть приложение, которое я использую, который автоматически блокирует (требуется экран ввода пароля) ...Добавление экрана PASSWORD в приложение, которое заново блокируется при смене устройства?
a) when the app starts for the first time
b) when another app is started and takes over the device
c) when the device "sleeps" automatically
d) when the user "sleeps" the device manually
(note: with c & d, if the user "awakens" the app within 5 seconds, it does NOT ask for the password)
Я хотел бы сделать это за приложение, которое я пишу, а поэтому я создал деятельность (PasswordActivity
) с необходимыми этапами проверки и правильной работой.
Я изначально разместил его в ONCREATE
MainActivity
(который был ЗАПУСКА в AndroidManifest). Казалось, что все работает нормально. Но затем начал с возможности повторной блокировки. Поэтому попробуйте переместить его на ONSTART
или ONRESUME
. Но тогда, когда другая АКТИВНОСТЬ в моем APP сделала фокус, или экран повернулся, то PasswordActivity
снова выстрелил. Это не сработает.
Здесь я нашел нить, рекомендующую сделать это приложение LAUNCHER в манифесте, а затем, когда пароль в порядке, вызовите MainActivity. Казалось, что он работает лучше ... но затем столкнулся с проблемой, что он «блокируется» только тогда, когда пользователь нажал кнопку «Назад» с главного экрана (я предполагаю, что остановил свое приложение) и снова запустил приложение. Однако не поймать другой APP, захватив устройство.
На основании этого и после просмотра всей документации я могу найти на жизненных циклах (хотя большинство из них основаны на ACTIVITY, а не APPLICATION) не уверены, как поймать, когда APP сам теряет фокус (другое приложение берет на себя) и как обращаться с автоматическим или ручным сном (C & D выше) вместе с проверкой временной задержки. Я предполагаю, что это будет комбинация нескольких вызовов или шагов, но точно не знаю, какие именно на этом этапе.
Любые рекомендации?
Я думаю, что когда ваше приложение переходит на задний план (теряет фокус), выполняется функция 'onPause'. Это то, о чем вы просите? – UDKOX
'OnPause' от того, что я могу сказать (и читал в Интернете в отношении LIFECYCLES, когда действие теряет фокус ... не обязательно сам APP. Если я попытаюсь поймать его в' onPause', это произойдет, когда другое действие WITHIN my – Peter
Не можете ли вы просто проверить, имеет ли другая активность фокус? Что-то вроде: 'public void onPause() {if (! hasAnotherActivityFocus()) {lockPassword();}}' – UDKOX