Android 开机启动 APP

本贴最后更新于 1855 天前,其中的信息可能已经事过景迁

最近开发一个项目需要用到 APP 一开机启动,并且自己能运行。

一. 实现

继承一个 BroadcastReceiver 用来处理 BOOT_COMPLETED 广播消息


public class BootBroadcastReceiver extends BroadcastReceiver {
    /**
     * 可以实现开机自动打开软件并运行。
     */
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        KLog.i("BootReceiver 收到广播  : " + action);
        if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
            KLog.i("收到开机广播,启动程序");
            Intent thisIntent = new Intent(context, MainActivity.class);
            thisIntent.setAction("android.intent.action.MAIN");
            thisIntent.addCategory("android.intent.category.LAUNCHER");
            thisIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(thisIntent);
        }
    }
}

在 AndroidManifest.xml 中注册

        <receiver
            android:name=".receiver.BootBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="2147483647">
                <!--注册开机广播地址-->
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
                <action android:name="android.media.AUDIO_BECOMING_NOISY" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>

代码非常简单。。。但是!!有些手机会收不到广播。

二. 不能自动启动的原因

AndroidManifest.xml 中 BOOT_COMPLETED 部分不正确,或者缺少必要的 uses-permission。

应用安装到了 sd 卡内,安装在 sd 卡内的应用不能收到 BOOT_COMPLETED。

系统开启了 Fast Boot 模式,这种模式下系统启动不会发送 BOOT_COMPLETED。

应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括 BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION 等等。

所有,有些应用只有 Background Service,而不包括任何 Activity,是不能启动的。

还有一种情况。拿小米的手机为例,需要在应用信息页面打开自启动的按钮才可以实现开机自启动。所以需要多留意机型适配。

  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 1 关注
  • 开机启动
    4 引用 • 1 回帖
  • 广播
    2 引用
  • receiver
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...