2016-05-19 3 views
2

私は自分のデバイスをロックしているときにも1つのアクティビティAndroidを表示したいと思います。 毎回、タブレットをロックすると(たとえば)、1つのアクティビティを表示する必要があります。デバイスがロックされているときのアクティビティを表示するにはどうすればよいですか?

だから、私はAndroidManifest.xmlをでこれを構築しています:

<activity 
    android:name=".activity.SetupInfoEmergencyActivity" 
    android:label="@string/app_name" 
    android:showOnLockScreen="true" 
    android:screenOrientation="sensorPortrait"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

これは活動

public class SetupInfoEmergencyActivity extends AppCompatActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     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); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.settings_activity); 
    } 

} 

のコードは、今ある私は、デバッグを実行しようとした場合、私はこの活動を見ることができ、私のデバイスのロックを解除してデバイスをロックすると、そのアクティビティは表示されません。

答えて

0

アクティビティを使用しないでください。セキュリティ上の理由から、Androidはあなたのアクティビティの後ろにロック画面を表示しないので、アクティビティの代わりにサービスを使用します。

以下は私のサービスのonStartCommandのコードです。これは、他の同様のポストからのコピーである

をマニフェストに名前= "android.permission.SYSTEM_ALERT_WINDOW":

WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

View mView = mInflater.inflate(R.layout.score, null); 

WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, 
ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0, 
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
/* | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON */, 
PixelFormat.RGBA_8888); 

mWindowManager.addView(mView, mLayoutParams); 

そして を追加するには、Androidの許可使用しています。私はカスタムビューを使ってそれを本当に素早く試してみました。あなたの意図が何であるか分かりません。

+0

MMM、[OK]が、メソッドの最後でこのコード。しかし、もし私が(例えば)スマートフォンに乗っていれば、ロックされています。この場合は、私の情報でアクティビティ/ビュー/スクリーンも見たいのですが – bircastri

1

使用私はスマートフォンをロックしたときに私のコードで、私は活動を見ることができるのonCreate

//show if unlock 
    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 
      | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); 
+0

私はそれをテストして100% –

関連する問題