我想做如下:
用户按下硬解锁按钮。按下解锁按钮后,我的活动开始了。关闭我的活动后,使用屏幕上的关闭按钮用户提示进入模式锁定(或锁定)。进入右图案锁定主屏幕后出现。
我想要以下情景:
按电源/解锁按钮 - >开始我的活动 - >点击活动的关闭按钮 - >提示输入解锁模式 - >输入模式 - >显示主屏幕
目前完成如下:
使用ACTION_USER_PRESENT
的广播接收器我在用户输入模式&设备已解锁
使用ACTION_SCREEN_ON
的广播接收器,我按下解锁按钮后获得日志信息,但是在用户输入模式&设备已解锁。
我尝试使用广播接收器接收ACTION_SCREEN_ON
和ACTION_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);
我尝试了很多,但我无法得到我想要的东西。如果任何人有想法,如何获得我想要的预期结果,任何帮助都会受到赞赏。
答案 0 :(得分:2)
尝试为要启动的活动添加WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
,只要您的活动位于所有其他窗口之上,这将暂时禁用密钥保护/密钥锁。