对于是否可以通过清单捕获ACTION_USER_PRESENT屏幕解锁似乎存在不同意见。
这个帖子暗示不能做不到:
Android Broadcast Receiver Not Working
这个帖子暗示可以做到:
Broadcast Receiver for ACTION_USER_PRESENT,ACTION_SCREEN_ON,ACTION_BOOT_COMPLETED
我无法使用2.3.3或3.2仿真器使用该事件。
有没有其他人有近期的经验?或许可以分享一个代码示例?
答案 0 :(得分:10)
使用接收器:
public class Receive extends BroadcastReceiver {
if (intent.getAction() != null) {
if
( intent.getAction().equals(Intent.ACTION_USER_PRESENT)) {
Intent s = new Intent(context, MainActivity.class);
s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(s);
}}
在你的清单中:
<receiver
android:name=".Receive"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT"/>
</intent-filter>
</receiver>
答案 1 :(得分:0)
官方文件说:
从Android 8.0(API级别26)开始,系统强加 对清单声明的接收者的其他限制。
如果您的应用程序针对Android 8.0或更高版本,则不能使用清单 声明大多数隐式广播的接收方( (不专门针对您的应用)。您仍然可以使用 用户正在积极使用您的应用程序时,上下文注册的接收器。
因此只有here可以接收隐式清单定义的事件。
简短答案: 因此不可能再在清单中声明它。但是可以通过上下文注册来使用。