Android开机广播android.intent.action.BOOT_COMPLETED
16lz
2021-12-04
1. 说明
Android手机开机后,会发送android.intent.action.BOOT_COMPLETED广播,监听这个广播就能监听开机。
2. 代码
<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/><receiverandroid:name="com.example.restarttest.BootupReceiver"><intent-filter><actionandroid:name="android.intent.action.BOOT_COMPLETED"/></intent-filter></receiver>
publicclassBootupReceiverextendsBroadcastReceiver{privatefinalStringACTION_BOOT="android.intent.action.BOOT_COMPLETED";@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(ACTION_BOOT.equals(intent.getAction()))Toast.makeText(context,R.string.bootup_receiver,Toast.LENGTH_SHORT).show();}}
3. 问题
Android API Level8以上的时候,程序可以安装在SD卡上。如果程序安装在SD卡上,那么在BOOT_COMPLETED广播发送之后,SD卡才会挂载,因此程序无法监听到该广播。
4. 解决
监听SD卡的挂载。
5. 同时监听的Intent-Filter问题
如果BOOT_COMPLETED和MEDIA_MOUNTED,MEDIA_EJECT写在同一个intent-filter中,那么无法检测到BOOT_COMPLETED,对于没有SD卡的手机,只能检测BOOT_COMPLETED,这样就会导致无法检测到开机了。
<receiverandroid:name=".com.example.restarttest.BootupReceiver"><intent-filterandroid:priority="1000"><actionandroid:name="android.intent.action.BOOT_COMPLETED"/></intent-filter><intent-filterandroid:priority="1000"><actionandroid:name="android.intent.action.MEDIA_MOUNTED"/><actionandroid:name="android.intent.action.MEDIA_EJECT"/><dataandroid:scheme="file"/></intent-filter></receiver>
更多相关文章
- Android6.0 MTK 需求文档(五)
- Android(安卓)监听 home键和菜单键
- Android(安卓)Studio 启用Lambda表达式
- 去掉非首次开机的优化过程都会有'Android正在升级'的提示
- Android摇一摇
- Android(安卓)之NavigationView&Toolbar&DrawerLayout
- Android(安卓)广播 使用方法
- Android(安卓)广播(Android(安卓)10)
- android 官方的下拉刷新:SwipeRefreshLayout