最近公司让做一个后台实时定位的功能,然后用的了BroadcastReceiver,开机重启功能,代码如下:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".MyBroadcastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter android:priority="1000"> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file" /> </intent-filter> </receiver>
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { context.startService(new Intent(context, MyService.class)); } }
但是在开机重启时,死活无法启动程序,建议用 adb去关机比较彻底而且高效(adb shell am broadcast -a android.intent.action.BOOT_COMP):网上找了一翻,总结出来有这几种情况:
1,权限未加入
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>2,安装到了SD卡中
3,系统启动了 fastBoot模式
4,应用安装后没有启动过
我的问题是没有系统没有设置:
然后一切正常,开机可以自启动,OK。