Разблокировать экран программно
У меня есть кнопка поделиться в GCM notification
, При нажатии на кнопку поделиться, мне нужно запустить намерение поделиться. Все работает отлично. Единственная проблема, с которой я сталкиваюсь, Lollipop
функция блокировки экрана. Когда я нажимаю кнопку "Поделиться" на экране блокировки, мое диалоговое окно намерений появляется под экраном блокировки, и пользователь должен разблокировать экран, чтобы увидеть диалоговое окно. Я хочу разблокировать экран программно, когда нажата кнопка "Поделиться".
Я пробовал с Power Manager, но все это wakeClock
флаги устарели и WindowManager.LayoutParams.Flag_KEEP_SCREEN_ON
рекомендуется использовать. Но я не использую активность здесь. я использую broadcastReciever context
, и, следовательно, я не могу использовать getWindow()
метод.
Я тоже пробовал с KeyguardManager
, Но даже disableKeyguard()
осуждается.
Я не могу использовать Intent.ACTION_SCREEN_ON
, как это следует использовать, если мы хотим выполнить какое-либо действие после разблокировки экрана.
я использовал ниже намерение программно закрыть панель уведомлений:
Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
mContext.sendBroadcast(it);
Есть ли подобное намерение, которое можно транслировать для разблокировки экрана?
Обновленный код с использованием DevicePolicyManager:
public static void handleShareBtnClick(Context context, String message) {
GcmHelper helper = new GcmHelper();
helper.shareMessage(context, message);
if(Utility.isLollypopAndAbove()){
helper.unlockLockScreen();
}
helper.launchShareforForAlert();
}
public void unlockLockScreen(){
DevicePolicyManager devicePolicyMngr= (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName compName=new ComponentName(mContext, DeviceAdminReceiver.class);
if(!devicePolicyMngr.isAdminActive(compName))
devicePolicyMngr.removeActiveAdmin(compName);
}
Даже после использования DevicePolicyManager он не разблокирует мой экран
1 ответ
Step 1: Add below code in your activity before
setContentView(R.layout.example);
**getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);**
Step 2: Lock your mobile than you will see activity in which you have added this code.
This will work even though your mobile is locked with pattern lock. This will work like a charm.