Может ли кто-нибудь помочь мне соединить точки?BroadcastReceiver (sms_received) + Администратор устройства (экран блокировки) + отключение кнопок Home / other menu - PullRequest
0 голосов
/ 20 марта 2012

Я более или менее смог понять и реализовать все эти концепции по частям, но каким-то образом был совершенно сбит с толку, что и куда ставить, и как они сочетаются друг с другом.

Короче говоря, это то, чего я пытаюсь достичь на нерутованном телефоне Android

  1. Получатель SMS-трансляции прослушивает входящие SMS с секретным кодом
  2. Блокировка экрана, если у смс есть блокировка ключевых слов.

Как BroadCastReceivers и DeviceAdminRecivers идут рука об руку?

Например. У меня есть рабочий код для перехвата SMS. Случай переключателя, который вызывает фиктивную (пустую) функцию lockScreen (). Теперь, где я должен поместить код DeviceAdminReceiver, чтобы я мог заблокировать экран (новая активность с полем для пароля с отключенным HOME и другими кнопками меню)?

Так что в основном это из BroadcastReceiver -> Device Admin -> Activity.

Пожалуйста, помогите мне.

Ответы [ 3 ]

1 голос
/ 27 марта 2012

Самый простой способ - создать собственный экран HOME и добавить функции, упомянутые ниже, чтобы он выглядел как собственный экран блокировки:

  1. Удаление уведомлений / строки состояния из пользовательского действия LockScreen
  2. Поймать и отключить нажатие кнопки ДОМОЙ / МЕНЮ, когда виден экран блокировки
  3. При получении секретного SMS-сообщения "LOCK PHONE" пользователь и широковещательный приемник SMS вызывают пользовательскую операцию блокировки экрана.
  4. Имейте PhoneBroadstReceiver для повторного появления LockScreen с некоторой задержкой (100 мс), чтобы экран по умолчанию системы входящих вызовов не выдвигал вашу блокировку LockScreenActivity в фоновый режим

P.S: DeviceAdmin может использоваться для блокировки телефона и отображения экрана блокировки системы по умолчанию, если пароль был установлен

0 голосов
/ 27 июня 2012

Код:

KeyguardManager mgr = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = mgr.newKeyguardLock(KEYGUARD_SERVICE); 
lock.reenableKeyguard();

НЕ заблокирует экран.Он просто включает блокировку клавиатуры.Когда вы запускаете с

lock.disableKeyguard();

и нажимаете кнопку блокировки на устройстве, оно не блокирует защиту клавиатуры.Для программной блокировки экрана вы должны обратиться к Device Admin и использовать метод locknow () для немедленной блокировки.

0 голосов
/ 20 марта 2012

Я не верю, что вы можете создать пользовательский экран блокировки на телефоне без рута, потому что, насколько я знаю, отключение кнопки «Домой» невозможно из приложения.

Ну, я не знал об этих приложениях экрана блокировки, но после дальнейших исследований кажется, что это будет путь:

1) Зарегистрируйте приложение для необходимых SMS-трансляций.

2) После получения трансляции проверьте ключевое слово блокировки

3) Если существует ключевое слово lock, программно заблокируйте телефон, используя:

private void lockScreen(){
    KeyguardManager mgr = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
    KeyguardLock lock = mgr.newKeyguardLock(KEYGUARD_SERVICE); 
    lock.reenableKeyguard();
}

Конечно, это не использует ваш пользовательский экран блокировки, но это может быть необязательно. Если вы хотите иметь свой собственный экран блокировки, следуйте этому руководству

http://developer.android.com/guide/topics/admin/device-admin.html

чтобы создать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...