概述
工作中有一个场景是只要返回桌面,重新回到A页面时会有个锁屏页面B,必须输入密码才可以进入A页面,现在是返回桌面的处理问题,首要想到监听home键,再判定当前最顶层页面是不是桌面即可
方法:
1,onUserLeaveHint方法,但是有个问题就是跳转其他app也会触发,因此不行
//在基类BaseActivity重写方法监听
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
i("onUserLeaveHint", "返回桌面" );
}
2,系统按键广播监听,但是也有问题,就是现在都是用的手势导航,没用三键导航,这个又不行了
2.1,自定义广播
ACTION_CLOSE_SYSTEM_DIALOGS+SYSTEM_REASON+homekey在onReceive方法中处理
2.2,注册和注销一下
3,判定当前是否桌面+onUserLeaveHint在一起监听
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
i("onUserLeaveHint", "返回桌面,当前是不是桌面:" + isHome());
if (isHome()) {
//这里就是回到桌面的处理逻辑
}
}
//判断当前界面是否是桌面
private boolean isHome() {
List<String> names = new ArrayList<>();
PackageManager packageManager = this.getPack