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>



更多相关文章

  1. android 判断手机是否插入SIM卡
  2. android 设备开发 让应用程序出现在模拟器启动列表中
  3. Android应用程序键盘(Keyboard)消息处理机制分析(22)
  4. 解决魅族手机在下拉刷新的时候出现hold
  5. 安卓基础学习 Day01 |第一个安卓应用程序:Hello Word!
  6. 英特尔® Android* USB 驱动程序安装指南
  7. 安卓外派(Android外派)提供安卓程序员外派业务(北京动点,可签合同)
  8. Android导出一个JAR库/Android如何将程序打成jar包/android 打包

随机推荐

  1. android添加联系人(直接添加到联系人数据
  2. Android下拉刷新上拉加载控件的使用
  3. android中socket编程
  4. android设置多个类似APP其中的一个为默认
  5. android 系统受保护广播
  6. Android(安卓)ListView下滑会报空指针异
  7. android 返回键 退出
  8. Android书签
  9. android 谷歌发音
  10. Android(安卓)标题栏、状态栏隐藏