android在屏幕打开和关闭的时候会发出广播,但是如果receiver配置在AndroidManifest.xml中时,receiver是接受不到任何广播的。

<receiver android:name="cn.abcd.listener.ScreenStateReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.SCREEN_OFF" />
                <action android:name="android.intent.action.SCREEN_ON" />
            </intent-filter>
        </receiver>

只能在代码中用context 去regist 这个receiver

BroadcastReceiver receiver = new ScreenStateReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_SCREEN_ON);
        App.context.registerReceiver(receiver, filter);

略坑的是,android developer上面居然没有直接说明。

简单查了下原因,大概是源码中发送这两个广播时设置了Intent.FLAG_RECEIVER_REGISTERED_ONLY这个flag。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-23
  • 2021-12-26
  • 2022-02-01
猜你喜欢
  • 2022-02-26
  • 2021-07-12
  • 2022-01-31
  • 2021-09-09
  • 2022-01-17
  • 2021-11-18
  • 2022-12-23
相关资源
相似解决方案