经过一段时间的努力,我发现最好的方法是在“ android.intent.action.USER_PRESENT”操作上注册一个BroadcastReceiver。
“广播操作:在设备唤醒后用户在场时发送(例如,键盘锁离开时发送)。”
为了区分用户在未锁定屏幕时打开屏幕还是在实际解锁屏幕时打开屏幕的情况,请使用KeyguardManager来检查安全性设置。
代码示例:
将此添加到您的活动中:
registerReceiver(new PhoneUnlockedReceiver(), new IntentFilter("android.intent.action.USER_PRESENT"));
然后使用此类:
public class PhoneUnlockedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
if (keyguardManager.isKeyguardSecure()) {
//phone was unlocked, do stuff here
}
}
}