使用BroadcastReceiver的清单中的ACTION_USER_PRESENT

时间:2011-10-21 18:08:16

标签: android android-manifest broadcastreceiver

对于是否可以通过清单捕获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仿真器使用该事件。

有没有其他人有近期的经验?或许可以分享一个代码示例?

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可以接收隐式清单定义的事件。

简短答案: 因此不可能再在清单中声明它。但是可以通过上下文注册来使用。