2010-12-04 7 views
7

あなたが推測できるように、私はAlarmManagerによってアラームを登録します。そして、BroadcastReceiverは正しく呼び出されます。しかし、電話をかけても、私の電話画面はまだロックされています。私は、デフォルトのAlarmClockアプリケーションがこれと似ていないことに気付きました。だから私の質問は、どのようにBroadcastReceiverが呼び出されたときに画面のロックを解除するのですか? (画面のロックを解除すると、自分のアクティビティを直接操作できるようになります) ありがとうございます。BroadcastReceiverが呼び出されたときに画面のロックを解除する方法は?

答えて

8

目覚まし時計のソースコードは、Androidのソースコードにあります。 AlarmClockはなくなっていますが、DeskClockに置き換えられました。 Source code is here。コードをすばやく見て、受信者がKeyguardManagerを使用しているようです。あなたが望むものと思われるドキュメントをチェックしてください。

編集:あなたの所見をここに追加します。このコードで行う必要があります:

final Window win = getWindow(); 
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
       | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
       | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
+0

おかげで前にそれを貼り付けていないことを確認し、その活動の()のonCreateでこれを貼り付け、私はあなたがここに提供したソースコードを読み込みます。実際に私は前にいくつかのコードを検索しましたが、何らかの理由で、私はデフォルトのAlarmClockソースコードを取得できません。 –

+0

うん、それは削除されているからです。新しい熱意は "DeskClock"です。いずれにしても、KeyguardManagerのドキュメント(私はそれにリンクされています)をすばやく見て、それが必要なものかどうかを確認してください。 – EboMike

+0

私は 'KeyguardManager'のドキュメントを見て、「キーボードのロックとロック解除に使用できるクラス」と言います。しかし、apiはあまり指向的ではないようです。私はそれを試す時間が必要です。とにかくありがとう。 –

0

受信したいアクティビティAを開きます(....)。

 final Window win= getWindow(); 
    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
       WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | 
       WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

あなたはsetContentView(....):)

関連する問題