android开机自启动应用的实现
2017-03-03 本文已影响739人
wwzlp
之前有个奇葩的需求就是要求设备开机时自动启动应用(自家产的设备),所以网上搜了下:
创建一个广播接收器,然后在onRecieve方法中实现启动应用:
public class BootBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
Intent toIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
context.startActivity(toIntent );
}
}
OK,功能是实现了,但是有时候启动会很慢,10+s之后才会启动,有时候又干脆不启动。一位朋友正好也做过相关的功能,提议我在方法中先睡两秒再去调起。
try {
Thread.sleep(2000L);
//Intent toIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
// context.startActivity(toIntent );
intent = new Intent(context, LauncherActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} catch (InterruptedException e) {
e.printStackTrace();
}
上面两种方法都可以调起应用,只是在睡两秒再启动后,成功率会高不少,而且相对也会比较快~。
最后,记得在xml文件中注册这个广播接收器哦:
<receiver android:name=".receiver.BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>