Android开机广播android.intent.action.BOOT_COMPLETED
16lz
2021-01-23
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>
更多相关文章
- android 判断手机是否插入SIM卡
- android 设备开发 让应用程序出现在模拟器启动列表中
- Android应用程序键盘(Keyboard)消息处理机制分析(22)
- 解决魅族手机在下拉刷新的时候出现hold
- 安卓基础学习 Day01 |第一个安卓应用程序:Hello Word!
- 英特尔® Android* USB 驱动程序安装指南
- 安卓外派(Android外派)提供安卓程序员外派业务(北京动点,可签合同)
- Android导出一个JAR库/Android如何将程序打成jar包/android 打包