android开机自启动应用的实现

之前有个奇葩的需求就是要求设备开机时自动启动应用(自家产的设备),所以网上搜了下:
创建一个广播接收器,然后在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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,308评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,597评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 昨天有幸去参加广州创交会,其实就是机器人交易博览会,在这之前我对于工业4.0、人工智能、智能制造都只是停留在大脑的...
    零叫兽阅读 214评论 0 0
  • 王者荣耀大法好 中毒患者知多少 上到五十老大妈 下到三岁小菜鸟 本来休息的时间 睡你麻痹去上分 上课上面老师讲 下...
    史上最帅督主阅读 112评论 0 1