Androidアプリ側からスクリーンロックを解除し、画面表示する方法
KeyguardManager.KeyguardlockのdisableKeyguard()でスクリーンロックを解除し、PowerManager.newWakeLock()のacquire()で画面表示します。onResume()に以下のように実装する。
keyguardmanager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); keyguardlock = keyguardmanager.newKeyguardLock("FindMyPhone"); keyguardlock.disableKeyguard(); keyguardmanager.exitKeyguardSecurely(new OnKeyguardExitResult(){ @Override public void onKeyguardExitResult(boolean success) { wakelock = ((PowerManager) getSystemService(Context.POWER_SERVICE)) .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "FindMyPhone"); wakelock.acquire(); } });
このままだとアプリ終了後もスリープに入らなくなってしまうので、アプリの終了時には元通りに戻さないといけないので、onPause()に以下のコードを実装する。
if (wakelock.isHeld()) {
wakelock.release();
}
keyguardlock.reenableKeyguard();
Android Manifestには以下のパーミッションを追加する必要があります。
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
※セキュリティロック(Screen Unlock Security)をかけてる場合はこの方法では解除できません。