Android APP开机自启动基本方法
Posted 静水红阳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android APP开机自启动基本方法相关的知识,希望对你有一定的参考价值。
前言
应用自启动主要是通过接收系统广播BOOT_COMPLETED
来实现的,在receiver中执行APP启动的方法。
实现
主要分为两个部分:
- androidManifest.xml配置,包括权限配置和广播注册。
- 广播中添加应用启动的代码。
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开机自启动基本方法的主要内容,如果未能解决你的问题,请参考以下文章