技术分享Android知识Android开发

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>
上一篇下一篇

猜你喜欢

热点阅读