最近有个需求要求app要开机自启动,就按照一般的套路去注册了一个静态广播接收器,代码如下:
manifest文件:
<receiver android:name=".receiver.StartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
java文件:
public class StartupReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ByLog.i(intent.getAction());
//开机启动
Intent mainIntent = new Intent(context, MainActivity.class);
//在BroadcastReceiver中显示Activity,必须要设置FLAG_ACTIVITY_NEW_TASK标志
mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mainIntent);
}
}
OK,运行然后重启。。。然而并没有作用。换了几个姿势重新重启。。。然而并没有作用。
google了一下,应该是没有添加<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />的缘故,于是添加上这行代码继续测试。。。然而并没有作用!!!
OK,继续google。但是google来google去得到的的结论都差不多,只要按照上面的套路来就可以接收到开机广播了。期间在stackoverflow一篇
问答上看到有的说法是要加上
<action android:name="android.intent.action.QUICKBOOT_POWERON" />,于是尝试了。。。然而并没有作用。