2013-05-11 2 views
0

В Android вы можете перейти к системным настройкам и включить блокировку экрана, посредством чего вам может потребоваться пароль, PIN-код или некоторые другие способы разблокировки экрана. Это обычно используется, если вы переводите устройство в режим ожидания или переходит в режим ожидания после того, как экран погаснет.Предотвращение доступа к активности путем повторного использования блокировки экрана Android

Что я хотел бы сделать, так это повторить использование этого экрана в моем приложении, но предотвратить доступ к определенному действию. У меня была бы кнопка, которая при нажатии вызывает активность блокировки экрана, когда пользователь должен ввести свой ПИН-код. Если они вводят его правильно, я затем позволяю им иметь доступ к этой активности, иначе они не смогут ее использовать.

Возможно ли повторное использование активности блокировки экрана в этом сценарии? Если да, то какой API мне нужен? Было бы хорошо, если бы он работал на Android 2.3

EDIT:

Некоторые из вас предполагая, что мое приложение требует PIN-код или пароль для работы. Это не относится к делу. Пользователи, которые хотят защитить определенные данные в моем приложении, могут потребовать, чтобы у него был PIN-код или пароль, чтобы просмотреть его. Но зачем писать свой собственный пароль/PIN-активность или диалог, когда система уже есть.

ответ

0

Такая защита доступна только для встроенных компонентов системы, таких как приложение настроек. Сторонние приложения не могут запрашивать диалог пароля, который будет показан, и продолжать работу только в том случае, если пользователь вводит правильный код.

Кроме того, приличное количество пользователей просто не имеет пароля на своем устройстве.

+0

Если вы не видите логика в этом. Это просто еще один компонент системы. Что касается пользователей, не имеющих кода доступа, это не имеет значения. Пользователи, использующие мое приложение, которые хотят использовать такую ​​функцию, включите ее. Цель блокировки экрана должна быть не более чем проверкой go/no-go. При отображении блокировки экрана ничего не происходит из-за проблем с безопасностью. – AndroidDev

+0

@AndroidDev Если вы видите логику в этом или нет, это не имеет значения. Вы все еще не можете это сделать, если вы не системное приложение. API, который предоставляет эту функциональность, отсутствует. –

0

Вы можете посмотреть KeyguardManager и KeyguardManager.KeyguardLock. Кажется, что изменения в функциях этой функции начинаются с уровня API 13, но я вообще не знаком с этой темой, поэтому вам придется исследовать, что если вы планируете идти по этому маршруту.

Возможно, вам лучше реализовать что-то самодостаточное в вашем приложении. Очень просто покрыть экран (возможно, другим действием) или скрыть программные элементы UI и показать альтернативный интерфейс с полем ввода пароля или что-то в этом роде.

+0

Как я писал в своем комментарии к Рагхаву, совершенно не имеет значения, что у пользователей есть пароли или нет.Если они хотят включить функцию в моем приложении, которая требует использования PIN-кода, они позволяют это. Вы предполагаете, что мое приложение НЕОБХОДИМО ПИН для некоторой функции. Это не относится к делу. Мои пользователи, которые хотят защитить часть своих данных, могут сделать это, требуя пароль или PIN-код, если они этого захотят. Но почему я должен изобретать колесо, когда активность блокировки экрана системы уже делает все. – AndroidDev

+0

Проблема с включением Keyguard заключается в том, что она позволяет использовать это устройство *, а не для вашего приложения. Вы, по сути, блокируете свое устройство. Если они хотят что-то сделать, им все равно придется отключить Keyguard, что заставляет вас снова скрывать видимость. – Karakuri

+0

В принципе, вы предлагаете повторно изобрести колесо. Блокировка экрана могла быть универсальной активностью, которую можно было использовать любым приложением и не использовать исключительно для блокировки ОС. Его следует использовать как способ go/no-go для проверки того, знает ли человек пароль или ПИН. Очевидно, что это недостаток дизайна в Android. – AndroidDev

-1

Вы можете использовать функцию блокировки экрана с самого Android 2.2. Таким образом, она будет работать в 2.3 легко. Метод использования этой функции может быть выполнен в основном двумя способами.

1-й из них.

Есть два способа вы можете заблокировать экран:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 


    manager.goToSleep(int amountOfTime); 

Второй является

 PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,Your  Tag"); 
     wl.acquire(); 
    wl.release(); 

Разрешение также needed.that является

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

Я не заинтересован в блокировке экрана. Я считаю, что мой пост был ясен. – AndroidDev

+0

'PowerManager.goToSleep()' отключает экран, но пользователь может не использовать защиту паролем или даже блокировку экрана вообще. 'WakeLock' не имеют никакого отношения к экрану блокировки, они просто препятствуют тому, чтобы форма устройства спала. – Karakuri