Android 让程序随系统自动启动并允许后台运行(白名单)

news2024/12/24 9:27:53

最近制作一个管理程序,需要在开机时候启动,并持续运行。这里简单记录下如何制作。

自启动原理

系统在启动的时候会广播一个ACTION_BOOT_COMPLETED,带有接收的程序可以收到,所以我们在接收到以后把程序运行起来。

清单文件设置

所以我们首先在清单文件AndroidManifest.xml的application节点中添加(receiver ),和RECEIVE_BOOT_COMPLETED权限。

如下内容:


<application 。。。。。。。。.
		<!-- 接收来自系统启动的消息 -->
        <receiver android:name=".BootBroadcastReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
</application>
<!-- 需要接收系统启动通知的权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

接收程序

清单文件中的BootBroadcastReceiver就是接收,我们再创建一个Java类,如下:


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class BootBroadcastReceiver extends BroadcastReceiver {

    static final String ACTION = "android.intent.action.BOOT_COMPLETED";

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.i("test - 广播启动","启动了,开启游戏管理器.");
        if (intent.getAction().equals(ACTION)){

            String apk_name = context.getPackageName();
            Intent it = context.getPackageManager().getLaunchIntentForPackage(apk_name);
            if (it != null) {

                it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(it);
            }
        }
    }

}

这样启动部分就做好了。

白名单

白名单就是把自己加入到系统白名单,不会在电池管理里去关闭掉进程。

清单文件

需要添加一个REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限。

<!-- 白名单 -->
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

脚本

脚本中我们在onCreate函数中添加:
首先判断是否已经在白名单了,如果不在我们进行添加,这样在打开应用的时候会提示是否允许添加到白名单。

	Log.i("test","是否白名单"+isIgnoringBatteryOptimizations())
    if(!isIgnoringBatteryOptimizations())
    {
        requestIgnoreBatteryOptimizations()
    }
	

函数:

//查询白名单
    @RequiresApi(api = Build.VERSION_CODES.M)
    private fun isIgnoringBatteryOptimizations(): Boolean {
        var isIgnoring = false
        val powerManager = getSystemService(POWER_SERVICE) as PowerManager
        if (powerManager != null) {
            isIgnoring = powerManager.isIgnoringBatteryOptimizations(packageName)
        }
        return isIgnoring
    }
    //添加到白名单
    @RequiresApi(api = Build.VERSION_CODES.M)
    fun requestIgnoreBatteryOptimizations() {
        try {

            val intent: Intent = Intent(android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
            intent.setData(Uri.parse("package:$packageName"))
            startActivity(intent)
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
        }
    }

第一次运行可以看到这个允许的界面
在这里插入图片描述

我的主界面是kotilin的,发觉还是Java语法顺手,就这样吧。

测试

最后我们编译运行后再设备重启,我们可以看到Log并看到我们的程序主界面被拉起了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyMysql快速上手操作详解

PyMySQL是从Python连接到MySQL数据库服务器的接口。 它实现了Python数据库API v2.0&#xff0c;并包含一个纯Python的MySQL客户端库 一、PyMysql安装 pip install pymysql 或者 pip3 install pymysql二、连接数据库 pymysql连接数据库使用的是 pymsql.connect() 函数&#xff…

数据库设计笔记3-事务管理,冲突串行化,锁定协议,死锁测试

#1.指令冲突 注&#xff1a;读读操作不冲突&#xff0c;剩下的冲突。 #2.冲突串行化 <1理解 如果一个调度可以在不改变冲突操作顺序的情况转换为任意串行调度&#xff0c;那么两个调度的结果是相同的&#xff0c;也就是说这个调度是可冲突串行化的 <2正反举例 <3测…

【教师秘籍】AI预测学生未来?职场规划大揭秘!

​声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2150.html 嘿老师们&#xff0c;你们有没有和我一样的烦恼&#xff1a;学生各有千秋&#xff0c;家长各有各的操心&#xff0c;信息一箩筐却总是不够用&#xff1f;&am…

基于JAVA的校园跑腿网站的设计与实现

摘要 随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高&#xff0c;校园跑腿网站给学校的业务带来了更大的发展机遇。 在经济快速发展的带动下&#xff…

[NPUCTF2020]ReadlezPHP1

打开题目&#xff0c;看到信息 ctrlu查看源代码 看到php代码&#xff0c;打开 代码审计看一下&#xff0c;进行代码审计&#xff0c;发现存在反序列化语句&#xff1a;$ppp unserialize($_GET["data"]);和执行漏洞&#xff1a;echo $b($a);&#xff0c;此处未想到fl…

荟萃科技:海外问卷调查项目可以长期做不?

当然可以&#xff01; 我已经做了两年多的海外问卷调查了&#xff0c;我觉得还是蛮有发言权的。 现在网络飞速发展&#xff0c;实体的生意也越来越来越不好做了&#xff0c;有人就把目标转移到了网络上&#xff0c;想知道一些其他的网络项目能不能做&#xff0c;如果能找到一…

【可控图像生成系列论文(六)】ECCV24-Glyph-ByT5 微软亚研院、清华、北大合作工作(上)

系列文章目录 【可控图像生成系列论文&#xff08;一&#xff09;】 简要介绍了 MimicBrush 的整体流程和方法&#xff1b;【可控图像生成系列论文&#xff08;二&#xff09;】 就 MimicBrush 的具体模型结构、训练数据和纹理迁移进行了更详细的介绍。【可控图像生成系列论文…

提示词工程学的前世今生:Generative Pre-trained Transformer 到AIGC,再到Prompt Engineering

人工智能&#xff08;Artificial intelligence&#xff0c;AI&#xff09;的演进已然变革了我们对于技术的理解以及应用方式。自最初的规则系统直至当下的深度学习&#xff0c;AI 在众多领域均彰显出了极为巨大的潜力。当中&#xff0c;生成式预训练模型&#xff08;Generative…

浮毛烦恼不复存在!不容错过的养宠好物——宠物空气净化器

猫咪一年有两次换毛季&#xff0c;多集中在春夏和秋冬&#xff0c;尤其是在春季&#xff0c;换毛时长可以达到一个月之久。在此期间。猫咪会疯狂掉毛&#xff0c;需要铲屎官们在此期间做好相关措施&#xff0c;让猫咪顺利度过换毛季。其中&#xff0c;最重要的就是猫毛清理&…

PLC远程控制网关再也不用劳累出差

在当今快速发展的工业4.0时代&#xff0c;随着智能制造与物联网技术的深度融合&#xff0c;工厂自动化系统的远程监控与管理已成为提高生产效率、优化资源配置的关键。其中&#xff0c;可编程逻辑控制器&#xff08;PLC&#xff09;作为工业控制的核心部件&#xff0c;其远程控…

Retrofit 自定义注解 实现可选择性的打印接口日志

序言 有时候我们需要打印okhttp的日志&#xff0c;但是现在的日志拦截器&#xff0c;不能做到接口级别的日志输出控制。要么就是全部打印。这样很影响调试效率。所以我在这块做了一些探索。 使用效果 普通输出 只需要在要打印日志的接口上添加 PrintLog 注解就可以打印&…

奥运足球背后的中国小公司

有一家中国的小公司叫做顶碁运动&#xff0c;居然打败了耐克和阿迪达斯这样的巨头&#xff0c;成功地成为了现在巴黎奥运会的足球供应商。 顶碁运动研发的足球&#xff0c;最大的优点就是能够在一秒钟之内精准地识别500次。因为他们在足球的内胆里面装置了芯片和传感器&#xf…

【Linux】:进程控制1(创建、终止、等待)

目录 1.进程创建 2.进程终止&#xff08;退出&#xff09; 2.1 什么是进程终止 2.2 进程退出的场景&#xff08;原因&#xff09; 2.3 进程退出码 2.4 错误码errno 2.5 进程常见的退出方法 正常终止 从main函数返回 调用库函数exit 系统接口_exit 3.进程等待 3.1 …

[qt] 多线程应用02

源码: 点击此处 一 UI 1.1 效果 1.2 代码 首先定义一系列的控件和按钮&#xff0c;用来显示Tcp连接数据信息。 QLabel *m_serverNameLabel;QLineEdit *m_serverLineEdit;QLabel *m_portLabel;QLineEdit *m_portLineEdit;QDateTimeEdit *m_d…

【书生大模型实战营第三期】基础岛 第3关 浦语提示词工程实践

欢迎大家参与第三期书生大模型实战营&#xff01;&#xff01;&#xff01; 1. 基础任务 背景问题&#xff1a;近期相关研究发现&#xff0c;LLM 在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b&#xff08;internlm2-chat-7b&#xff09;也存在这…

数据结构——排序(2):选择排序+交换排序

目录 一、选择排序 &#xff08;1&#xff09;直接选择排序 ①思路 ②过程图示 ③代码实现 ④代码解释 ⑤优化 1.代码实现 2.过程图示 3.代码解释 4.注意 ⑥直接选择排序的复杂度 &#xff08;2&#xff09;堆排序 ①注意 ②代码实现 二、交换排序 &#xff08…

一键生成!AI绘画、视频制作与写作神助攻

市面上有各种各样的AI助手&#xff0c;它们覆盖了文字处理、图像编辑、视频制作到语音识别等众多领域。这些工具设计得既实用又友好&#xff0c;几乎每个人都能找到适合自己的那一款。 1. 文字处理助手 文本生成&#xff1a;帮你快速创作文章、博客等内容。 内容优化&#xff…

操作ArkTS页面跳转及路由相关心得

本文为JS老狗原创。 当前端不得不关注的点&#xff1a;路由&#xff0c;今天聊一聊鸿蒙相关的一点心得。 总体上套路不意外&#xff0c;基本就是&#xff08;尤其是Web&#xff09;前端那些事&#xff1a;维护路由表、跳转带参数、历史堆栈操作&#xff0c;等等。 历史原因&…

越秀·星汇城|大城好生活

建筑&#xff0c;是美好生活的载体。而户型则是住宅的灵魂&#xff0c;一处好的居所&#xff0c;承载理想生活盛放。 细腻的美好藏在生活各个角落&#xff0c;星汇城以24小时贯穿的细节享受&#xff0c;重新定义幸福该有的舒适。诉说生活的达观&#xff0c;臻藏岁月静好。 8:…

windows系统获取网卡信息

在抓包或者使用socket&#xff0c;或者监听端口时&#xff0c;如果使用的是pcap4j类库&#xff0c;就会用到网卡信息&#xff0c;那么怎么查看本机的网卡信息呢&#xff0c;Linux的比较方便&#xff0c;直接通过ifconfig命令就能看到&#xff0c; windows的比较麻烦一点&#x…