如何启动后解锁btn按&解锁屏幕出现之前的活动?

我想要做如下:

用户按下硬解锁button。 按解锁button后,我的活动开始。 closures我的活动后,使用屏幕上的closuresbutton用户提示进入模式locking(或引脚locking)。 进入右键locking主屏幕后出现。

我想要下面的情景:

按开机/解锁button – >开始我的活动 – >点击活动的closuresbutton – >提示input图案解锁 – >进入图案 – >显示主屏幕

目前完成如下:

使用ACTION_USER_PRESENT广播接收器我得到了用户进入模式和设备解锁后的活动

使用ACTION_SCREEN_ON广播接收器,在解锁button按下后,我得到了msg的日志,但是在用户input模式和设备解锁之后,活动开始。

我尝试使用广播接收器接收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)); } } 

注册广播Listner –

 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); 

我尝试了很多,但是我得不到我想要的。 任何帮助表示赞赏,如果任何人有想法,如何得到预期的结果,如我所愿。

尝试添加WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED为您的活动启动,这将暂时禁用键盘锁/键锁,只要您的活动是所有其他窗口之上。