1. 开机启动广播
大家都知道,1.申请权限 2.注册广播
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
- <receiver android:name=".StartServiceAtBootReceiver"
- android:enabled="true"
- android:exported="false"
- android:label="StartServiceAtBootReceiver">
- <intent-filter>
- <action android:name="android.intent.action._BOOT_COMPLETED"/>
- </intent-filter>
- </receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".StartServiceAtBootReceiver"
android:enabled="true"
android:exported="false"
android:label="StartServiceAtBootReceiver">
<intent-filter>
<action android:name="android.intent.action._BOOT_COMPLETED"/>
</intent-filter>
</receiver>
实际上, 不申请以下权限, 开机一样会启动。这可能是android的一个Bug。
android.permission.RECEIVE_BOOT_COMPLETED
参考:http://stackoverflow.com/questions/4635353/is-android-permission-receive-boot-completed-not-required
2. 屏幕开启/关闭广播
在Manifest.xml中注册不行,在代码中注册才行.
- <receiver android:name="IntentReceiver">
- <intent-filter>
- <action android:name="android.intent.action.SCREEN_ON"></action>
- </intent-filter>
- </receiver>
<receiver android:name="IntentReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
像这样注册,当屏幕点亮时,是无法接收到广播的。只有这样才行..
- registerReceiver(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- // ...
- }
- }, new IntentFilter(Intent.ACTION_SCREEN_ON));
本文详细介绍了Android中的开机启动广播及屏幕开启/关闭广播的具体实现方式。对于开机启动广播,不仅展示了如何通过Manifest文件进行配置,还特别指出即使没有申请特定权限也能启动的问题,并提供了代码示例。对于屏幕状态变化广播,则强调了必须通过代码动态注册才能正确接收。

被折叠的 条评论
为什么被折叠?



