«

androidの亮屏,灭屏,解锁广播使用

时间:2024-3-2 18:46     作者:韩俊     分类: Android


androidの亮屏,灭屏,解锁广播使用

  1. 亮屏广播的接收
    不需要添加权限那些,我在xml 中配置action 都是不生效的,没有接收到广播。
    //亮屏监听
    private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())) {
        Log.e(TAG, "亮屏啦,,");
    }
    }
    };
    注意:但是注册广播时候需要代码java 动态注册否则监听不到。
    //注册亮屏广播
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_SCREEN_ON);
    registerReceiver(receiver, filter);
  2. 灭屏(锁屏)的广播同上
    filter.addAction(Intent.ACTION_SCREEN_OFF);

    然后监听

    (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) 即可
    注意:也是需要动态注册广播才能接受到的。
    对于这两个action:

    android.intent.action.SCREEN_OFF

    android.intent.action.SCREEN_ON

    在AndroidManifest.xml中注册是不可以的。

    这有点不同于其他的action,你只有在Service中通过动态注册去监听这个事件。

    这个问题我的理解是google故意这么做的,有两点考虑:

    1.提高监听screen_on screen_off门槛

    这两个事件是android的基本事件,如果呗大多数程序监听,会大大的拖慢整个系统,所以android也应该不鼓励我们在后台监听这两个事件。

    2.有让我们在service后台监听

    这也是提供了一个解决问题,强调和service共存亡,不会一直在后台无限情运行。

3.解锁广播
filter.addAction(Intent.ACTION_USER_PRESENT);

if(Intent.ACTION_USER_PRESENT.equals(intent.getAction()))

解锁或者可以使用xml 配置

 <!-- 解锁广播 -->
  <receiver android:name="com.example.applock.demos.UserpresentReceiver"> 
            <intent-filter> 
                <action android:name="android.intent.action.USER_PRESENT" /> 
            </intent-filter> 
  </receiver>
然后广播监听
public class UserpresentReceiver extends BroadcastReceiver{
    private String TAG="UserpresentReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        String action=intent.getAction();
        Log.e(TAG, "action="+action);
        if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) {
            Log.e(TAG, "竟然可以解锁");
        }
    }
}



标签: android

热门推荐