我正在编写一个应用程序,需要在设备锁定时通过锁定屏幕显示活动。 我还有另一个问题要问如何检测设备是否被锁定或设备的锁定超时。如果每个人都知道请告诉我如何做到这一点。 Question Hyperlink
这是第二个问题。
我有一个主动(A)来启动服务。服务注册接收器以检查设备是否屏幕关闭。 当设备屏幕关闭时,活动(B)将显示在锁定屏幕上。 我禁用了键盘锁,并在我的活动关闭后重新启用以模拟此操作。
但是,如果主要活动(A)正在运行,无论是在屏幕上显示还是在暂停状态,当屏幕关闭且显示活动(B)时,我用{{1}关闭活动(B)后在活动(B)中,解锁设备后显示的主要活动(A)甚至主要活动(A)在设备关闭屏幕之前不会显示在屏幕上。
这是接收器中的代码
finish()
也许我的英语很难理解。
这是理想的流程
主要活动(A) - >用于启动服务的按钮
服务注册接收者
接收器检测屏幕是否关闭,启动activityB
activityB - >按钮到@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.d("Receiver", "Screen ON");
} else {
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(context, activityB.class);
context.startActivity(i);
Log.d("Receiver", "Screen OFF");
}
}
- > show keyguard - >解锁 - >在设备锁定之前显示上一个视图/活动
然而 主动性(A) - >开始服务 - >服务注册接收者 - >按主页按钮以最小化所有正在运行的应用/活动 - >等待屏幕超时 - >接收器检测屏幕关闭 - >开始活动B - > close activityB - >解锁 - >主要活动(A)显示
我猜这个问题来自finish()
,活动(B)作为一项任务开始,所以当主活动(A)运行时,关闭活动(B)将返回主活动(A)
P.S。如果我按后退按钮关闭主动(A),由于服务启动,当屏幕关闭时仍显示活动(B),当活动(B)关闭时,主动(A)不显示。
非常感谢。