Android APP开机自启动基本方法

Posted 静水红阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android APP开机自启动基本方法相关的知识,希望对你有一定的参考价值。

前言

应用自启动主要是通过接收系统广播BOOT_COMPLETED来实现的,在receiver中执行APP启动的方法。

实现

主要分为两个部分:

  1. androidManifest.xml配置,包括权限配置和广播注册。
  2. 广播中添加应用启动的代码。

1. 权限添加

AndroidManifest.xml文件中添加BOOT监听权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

2. 安装方式配置

manifest根目录下设置为安装方式:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:installLocation="internalOnly">

设置为将应用安装到内部存储中,安装在SD卡中可能会导致自启动失败。

3. 广播注册

AndroidManifest.xml文件中注册广播:

        <receiver
            android:name=".receiver.BootReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

4. receiver中添加应用启动逻辑

示例代码如下:

class BootReceiver : BroadcastReceiver() 
    override fun onReceive(context: Context, intent: Intent) 
        if (intent == null) return
        if (TextUtils.equals(intent.action, "android.intent.action.BOOT_COMPLETED")) 
            val newIntent = Intent(context, MainActivity::class.java)
            ContextCompat.startActivity(context, newIntent, null)
        
    

设置一下应用启动逻辑。

5. 问题说明

在执行如上步骤之后,在模拟器运行已经可以启动后应用重启。
但是在手机上测试可以会无法启动,原因是手机上可能安装有手机管家之类的软件。需要在其中将当前应用的自启动选项打开才能生效。

总结

Android开机自启动示例

Android App 开机自启动

参考技术A <article class="_2rhmJa">

Android 设备开机自启动的可以用广播实现,因为 Android 设备开机时会发送一条开机广播 "android.intent.action.BOOT_COMPLETED"。接收后实现启动就完成了。

接下来是准备工作

如果按照上面的全部步骤后操作后,重启没有自动启动程序,怎么办呢?是怎么回事呢?

*那么首先请检查一下你的手机是不是安装了360等安全助手之类的软件,如果有,请在软件的自启动软件管理中将app设置为允许
*我的手机没有安装这些软件,但是手机中自带了安全助手,有的手机系统设置里面自带了自启动软件管理的功能 ,所以在这里将我们的app设置为允许开机启动),重启手机,测试是否成功。

然而并没有成功

接收不到BOOT_COMPLETED广播可能的原因
(1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加
(2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的
(3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播,除非广播带有FLAG_INCLUDE_STOPPED_PACKAGES标志,而默认所有系统广播都是FLAG_EXCLUDE_STOPPED_PACKAGES的,所以就没法通过系统广播自启动了。所以Android3.1之后
(1)、应用程序无法在安装后自己启动
(2)、没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。
存在一种例外,就是应用程序被adb push you.apk /system/app/下是会自动启动的,不处于stopped状态。

并不太懂 我的APP启动后 已经收到广播

第一种方式 我再模拟器上 测试 可以 android 9.0版本

桌面设置也会把你的app当成一个桌面主题,还有一个选项是系统桌面,你需要设置成自己的app

如果找不到桌面设置选项,可以从手机设置–应用程序-查看所有应用程序(包括系统的应用程序),找到桌面程序之类的字眼的应用,清楚其默认设置。

以上是关于Android APP开机自启动基本方法的主要内容,如果未能解决你的问题,请参考以下文章

Android App 开机自启动

Android 使用广播系统解决app开机自启动问题

Android中app开机自启动的开发

如何实现apk安装后自启动

RN App开机自启动

如何将苹果手机开机启动APP?