ACTION_USER_PRESENT in manifest with BroadcastRece

2019-03-27 05:32发布

问题:

There seems to be different opinions on whether it is possible to catch the ACTION_USER_PRESENT screen unlock through the manifest.

This thread implies no it can't be done:

Android Broadcast Receiver Not Working

This thread implies yes it can be done:

Broadcast Receiver for ACTION_USER_PRESENT,ACTION_SCREEN_ON,ACTION_BOOT_COMPLETED

I'm not able to get the event working with either a 2.3.3 or 3.2 emulator.

Does anyone else have recent experience with this? And perhaps a code sample to share?

回答1:

Use a receiver:

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);
}}

And in your manifest:

    <receiver
        android:name=".Receive"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.USER_PRESENT"/>
        </intent-filter>
    </receiver>