0

この質問がこれまでになかったといいのですが、問題の解決策が見つかりませんでした。keyguardにも使用されるウィジェットがあります。ウィジェットに onClick ハンドラを追加したいと考えています。ウィジェットがホーム画面にある場合、アクティビティは正常に開始されます。ただし、キーガードではアクティビティが開始されますが、デバイスがロックされているため表示されません。

やのようなフラグでキーガードを却下したくありません。Androidの電子メールアプリケーションのように、いくつかのキーガードウィジェットをクリックすると開くように、デバイスのロックを解除するように求められる小さなウィンドウを表示したいだけです。WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKEDWindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

これを達成するための別のフラグはありますか?それとも、アクティビティを開くために呼び出された、自分の意図で何かをする必要がありますか? 手伝ってくれてありがとう。

4

1 に答える 1

0

Android でロック画面を有効または無効にするには、getSystemService() を使用してキーボード マネージャーのインスタンスを取得する必要があります。構文は次のとおりです。

KeyguardManager keyguardManager = 
    (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);  
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);  

画面の使用をロックするには、

lock.reenableKeyguard();

ロックの使用を無効にするために、

lock.disableKeyguard();  

これにより、ロック画面が非表示になり、着信コールまたはそのようなイベントが発生している場合に表示され、その画面が表示されます. ロック画面を表示しません。

アプリケーションの実行時に、ロック状態になることを無効にするに setKeepScreenOn()は、true に設定するだけです。またはxml属性を使用しますandroid:keepScreenOn="true"

アプリケーションの実行中にデバイスがスリープ モードまたはロック モードに移行するのを防ぐ別の方法は、この API を true に設定することです - setKeepScreenOn()

そしてもちろん、許可を与える必要がありますandroid.permission.DISABLE_KEYGUARD

于 2015-11-27T10:59:25.167 に答える