web-dev-qa-db-ja.com

プログラムで画面のロックを解除する

_GCM notification_に共有ボタンがあります。共有ボタンをクリックすると、共有インテントを起動する必要があります。すべてが完璧に機能します。私が直面している唯一の問題は、Lollipopロック画面機能です。ロック画面から共有ボタンをクリックすると、ロック画面の下にインテントダイアログが表示され、ユーザーはダイアログを表示するために画面のロックを解除する必要があります。共有ボタンがクリックされたときに、プログラムで画面のロックを解除したい。

Power Managerで試しましたが、wakeClockフラグはすべて非推奨であり、_WindowManager.LayoutParams.Flag_KEEP_SCREEN_ON_の使用をお勧めします。しかし、私はここでアクティビティを使用していません。 _broadcastReciever context_を使用しています。したがって、getWindow()methodを使用できません。

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を使用した後でも、画面のロックが解除されません

11
Sangeetha Pinto
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. 
7
shailesh Rohit