2012-11-01 21 views
9

私は以下のようにしたい:ロックを解除した後にアクティビティを開始する方法ロック解除画面が表示される前に&を押しますか?

ユーザーはハードロック解除ボタンを押してください。ロック解除ボタンを押すと、私の活動が始まります。私の活動を閉じた後、画面上のクローズボタンを使用して、パターンロック(またはピンロック)を入力します。右のパターンロックのホーム画面が表示された後に表示されます。

私はシナリオの下たい:

押して電源/ロック解除ボタン - >私の活動を開始 - >活動の閉じるボタンをクリックしてください - >プロンプトで、ロック解除用のパターンを入力する - >ディスプレイのホーム画面

- >パターン入力

は現在、以下のように完了:ACTION_USER_PRESENTの放送受信機を使用

私は、ユーザーの後に活動を持って入るパターン&デバイスはの放送受信機を使用

のロックを解除しています、ロック解除ボタンを押した後にログにmsgが表示されますが、ユーザがパターンを入力した後にアクティビティが開始されます&デバイスがロック解除されています。

ブロードキャスト受信機を使用して、ACTION_SCREEN_ONACTION_USER_PRESENTのイベントを受信しようとしました。

マイコードは以下の通りです:

ブロードキャストレシーバー -

public class BrodcastReceiver extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.d("receiver", "main"); 

     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) 
     { 
      // do whatever you need to do here 
      Log.d("receiver", "screen off"); 
     } 
     else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) 
     { 
      // and do whatever you need to do here 
      Log.d("receiver", "screen on"); 
      context.startActivity(new Intent(context, 
        unlock_image.class) 
        .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
        .setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) 
        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 
      Log.d("receiver", "aft activity"); 
     } 
     else if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) 
     { 
      Log.d("receiver", "unlock"); 

      context.startActivity(new Intent(context, 
        unlock_image.class) 
        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 
     }  
    } 

登録する放送のリスナー -

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
     filter.addAction(Intent.ACTION_SCREEN_OFF); 
     filter.addAction(Intent.ACTION_USER_PRESENT); 
     BroadcastReceiver mReceiver = new BrodcastReceiver(); 
     registerReceiver(mReceiver, filter); 

私は多くを試みるが、私は私が欲しいものを得ることができません。誰かがアイデアを持っているなら、どんな助けもありがたいです。私が望むように期待された結果を得る方法。

答えて

2

アクティビティを開始するためにWindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKEDを追加してみてください。アクティビティが他のすべてのウィンドウの上にある限り、キーガード/キーロックは一時的に無効になります。

関連する問題