转载请标明:http://blog.csdn.net/inquisitive_plus/article/details/44802289 有问题欢迎提出,共同学习
下面的有可能和手机运行环境相关,测试环境是华为的4.2系统,未root
1、开机广播在manifest里静态注册
2、要授予权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
3、安装后要至少启动一次,包括IDE连真机安装后的启动。
4、在“设置”->“隐私和安全"下的"开机自启项"里允许程序自动运行
5、在“设置”->"应用程序管理"->“强制停止”后,将无法自动开机。可以自己手动启动应用恢复
6、要启动activity,intent可以设置intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
7、intent-filter的priority属性决定启动优先级,数字越大优先级越大
8、如果priority优先级一样,则后安装的apk先启动
9、开机广播是无序广播,使用abortBroadcast会导致异常
权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
广播:
public class MyBR extends BroadcastReceiver{
private static final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent){
if (intent.getAction().equals(ACTION_BOOT)){
Intent newIntent = new Intent(context, MainActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
}
}
}
注册:
<receiver android:name="com.XXXX.XXXX.MyBR">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>