最近公司让做一个后台实时定位的功能,然后用的了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。