Android 无法接收开机广播的问题
16lz
2021-01-23
Android手机开机后,会发送android.intent.action.BOOT_COMPLETED广播,监听这个广播就能监听开机。
public class BootRroadCastReceiver extends BroadcastReceiver { private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { if(ACTION_BOOT.equals(intent.getAction())) Toast.makeText(context, R.string.bootup_receiver, Toast.LENGTH_SHORT).show(); }}
但是Android API Level8 以上的时候,程序可以安装在SD卡上。如果程序安装在SD卡上,那么在BOOT_COMPLETED广播发送之后,SD卡才会挂载,因此程序无法监听到该广播。
**解决办法:**同时监听开机和sd卡挂载。(也不能只监听挂载就认为开机了,因为有的手机没有sd卡)
实现对挂载进行监听media mounted如下:
合并开机广播监听和sd卡挂载监听:
还收不到?
增加权限:
修改开机广播接收器如下:
public class BootBroadcastReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent){//接收广播:系统启动完成后运行程序if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){Intent ootStartIntent = new Intent(context, Login_Activity.class);ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(ootStartIntent);}//接收广播:安装更新后,自动启动自己。 if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED) || intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)){Intent ootStartIntent = new Intent(context, Login_Activity.class);ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(ootStartIntent);}}}
更多相关文章
- Android获取应用程序的信息
- Android应用程序全屏显示的方法
- android设置手机桌面
- Android实现再按一次(返回键)实现退出(应用程序)
- android 程序检测是否安装
- Android:验证EditText输入框输入的手机号
- [zz]一个JNI下c和java程序范例
- Android 对程序异常崩溃的捕捉
- android程序执行adb shell命令