Как отобразить активность, когда экран заблокирован? - PullRequest
29 голосов
/ 25 сентября 2010

Мое приложение запускается при событии стыковки с автомобилем, я хочу включить телефон (выполняется системой) и разблокировать экран при подключении устройства.Возможно ли это?

Ответы [ 4 ]

43 голосов
/ 08 февраля 2012

Я использую для повышения активности на верхний уровень

    private Window wind;
    @Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    /******block is needed to raise the application if the lock is*********/
    wind = this.getWindow();
    wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
    wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
    /* ^^^^^^^block is needed to raise the application if the lock is*/
}
21 голосов
/ 25 сентября 2010

Используйте Activity.getWindow (), чтобы получить окно вашей активности;используйте Window.addFlags (), чтобы добавить любой из следующих флагов в WindowManager.LayoutParams, который вы хотите: FLAG_DISMISS_KEYGUARD , FLAG_SHOW_WHEN_LOCKED , FLAG_TURN_SCRE_100EN_SCREВот как стандартное приложение автомобильной док-станции (и настольной док-станции) реализует такое поведение.

4 голосов
/ 23 февраля 2014

При использовании шаблона блокировки или ввода пин-кода мне нужно было также добавить следующее, потому что экран выключился менее чем за 5 секунд:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
4 голосов
/ 26 августа 2013

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

FLAG_SHOW_WHEN_LOCKED только выведет вашу текущую активность вверху, если пользователь попытается переместиться в другое место, ему придется разблокировать экран.

Кроме того, вы можете добавить разрешение в манифест:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

А, в вашей деятельности по созданию:

KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard(); 
...