«Блокировка экрана» с пользовательским паролем безопасности - PullRequest
6 голосов
/ 03 марта 2012

Я просмотрел множество похожих вопросов и обнаружил, что не можно сделать в качестве стандартного шкафчика для Android блокировки экрана. Что возможно, это сделать приложение, которое отключает LockScreen и использует другой «замок» вместо стандартного. Я думаю о создании собственного экрана блокировки с другим типом блокировки. То, что я не знаю, возможно:

  1. Существуют ли способы использования XML-макета для экрана блокировки
  2. Могу ли я написать это как обычное приложение

Я не хочу ссылки на существующие приложения на рынке.

Ответы [ 2 ]

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

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

У меня есть концепция, и эта страница также может оказаться вам полезной: http://chandan -tech.blogspot.com / 2010/10 /processing-screen-lock-unlock-in-android.html

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

Для его реализации необходимо также создать службу, которая должна запускаться при запуске системы.В своей деятельности вы также должны отключить панель уведомлений и кнопки.

0 голосов
/ 03 ноября 2015

Вы можете попробовать переопределить KeyguardManager

KeyguardManager.KeyguardLock key;
KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
//depreciated
key=km.newKeyguardLock("IN");

Вы должны вставить это в сервис. Идите как-то так:

public class LockService extends Service{
BroadcastReceiver receiver;
@override
@SuppressWarnings("deprecation")
public void onCreate(){
KeyguardManager.KeyguardLock key;
KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
//depreciated
key=km.newKeyguardLock("IN");
IntentFilter filter=new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
receiver=new LockscreenReceiver();
registerReceiver(receiver,filter);
super.onCreate();
}

И затем в LockscreenReceiver вы должны выполнить это действие:

public class LockscreenReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context,Intent intent){
String action=intent.getAction();
//if the screen was recently enabled, do this:
//If the screen was just turned on or it just booted up, start your Lock Activity
        if(action.equals(Intent.ACTION_SCREEN_OFF) || action.equals(Intent.ACTION_BOOT_COMPLETED))
        {
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
}
}

После этого вы должны зарегистрироваться или позвонить в сервис MainActivity

startService(new Intent(this,LockscreenService.class));

Чтобы увидеть это в действии, перейдите к https://github.com/thomasvidas/Simple-Lockscreen

...