Qt for Android实现开机自启动

news2024/12/23 9:57:06

前言

最近项目需要,在Android上编写的程序,需要实现开机自启动。笔者查询了下资料,基本原理如下:

当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 android.intent.action.BOOT_COMPLETED。 只要在程序中“捕捉”到这个消息,再启动程序入口之即可。 我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个BroadcastReceiver类

一、确定包名

首先切换到Android的开发套件上,生成AndroidManifest.xml文件,操作步骤如下所示

 

 

 Qt开发的android程序,默认包名可能是org.qtproject.example,一般会自定义一个包名。

二、创建java文件

根据找到的包名,创建java文件。以org.qtproject.example为例,需要在android目录下创建src/org/qtproject/example目录。新建java文件BootBroadcastReceiver.java,并放入指定的目录中。

java文件内容如下

package org.qtproject.example;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootBroadcastReceiver extends BroadcastReceiver {
        static final String action_boot="android.intent.action.BOOT_COMPLETED";
        @Override
        public void onReceive(Context context, Intent intent) {
                if (intent.getAction().equals(action_boot)){
            Intent StartIntent=new Intent(context,org.qtproject.qt.android.bindings.QtActivity.class); //接收到广播后,跳转到MainActivity
                        StartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(StartIntent);
                }
        }
}

说明:

1.java文件中的包名,必需与应用程序中的包名对应 

2.Intent()中第二个参数,需要在AndroidManifest.xml文件中查找,必须对应

若是Qt5,可能是org.qtproject.qt5.android.bindings.QtActivity.class 

三、修改AndroidManifest.xml文件

1.在application标签内,添加receiver

<receiver android:name=".BootBroadcastReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <category android:name="android.intent.category.HOME"/>
    </intent-filter>
</receiver>

2.添加启动权限

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

整个 AndroidManifest.xml文件如下所示

四、运行测试

添加完成后,就可以运行测试了。但记住,需要分配足够的权限,且需要至少运行一次才能生效。

笔者测试使用的源码下载

后记

笔者在多个android设备上测试均正常,但在华为鸿蒙上未成功

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

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

相关文章

详解时间复杂度计算公式(附例题细致讲解过程)

这几天开始刷力扣上面的算法题&#xff0c;有些题目上面限制时间复杂度和空间复杂度&#xff0c;题目虽然写出来了&#xff0c;但是很没底。印象里数据结构老师讲过一点&#xff0c;沉睡的记忆苏醒了。只记得一个时间复杂度是O(n)&#xff0c;空间复杂度是S(n)。for循环常常是O…

中学语文教学参考杂志社中学语文教学参考编辑部2022年第27期目录

理论学术_课题荟萃《中学语文教学参考》投稿&#xff1a;cn7kantougao163.com 统编教材鲁迅作品的民俗文化分析及教学应用 张家波;张晓静; 3-5 高中语文线上学习的实践与反思 张灵贵; 6-797 不同课型导学案设计建议 张桂霞; 8-997 现代化进程中的阵痛:《哦,香雪…

遇到Bug漏测,不能总想着甩锅吧

背景 漏测Bug是指产品逻辑缺陷在测试过程中没有被发现&#xff08;尤其是测试环境可以重现的缺陷&#xff09;&#xff0c;上线版本发布后或者在用户使用体验后发现并反馈回来的缺陷。 漏测Bug可能造成线上故障或者资损&#xff0c;在对产品测试过程中&#xff0c;自己也难免…

Pandas常见筛选数据的五种方法其一逻辑筛选。看见必懂,懂者必会,会者必加分

前言&#xff1a;Pandas的数据操作中&#xff0c;最基本的就是操作的筛选了&#xff0c;但是对新学员来说的这又是一个难点&#xff0c;因为方法比较多&#xff0c;不容易记。在此总结一下pandas中的一些常用的数据筛选操作。 逻辑筛选数据&#xff1a;切片&#xff08;[ ]&am…

ubuntu 安装、配置FTP

ubuntu 安装、配置FTP 提示&#xff1a;ubuntu 16.0.4&#xff0c;不同版本操作可能稍有不同 前言 本文主要对服务器安装及配置FTP做一个记录&#xff0c;涉及安装、配置、创建FTP账号、以及第一次连接异常等。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可…

单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 频域均衡是从校正系统的频率特性出发&#xff0c;利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性&#xff0c;使包括可调滤波器在内的基带系统的总特性接近无失真传输条件。频域…

【Spring项目中的Controller理解】

目录 1. 添加依赖 2. 关于异常 1. 添加依赖 首先&#xff0c;需要保障此项目中存在spring-boot-starter-web依赖项&#xff0c;否则&#xff0c;当前项目并不具备Web应用程序开发所需的依赖&#xff01; 提示&#xff1a;spring-boot-starter-web是建立在spring-boot-starte…

基于Python的Django开发接口框架搭建

1、安装Django&#xff0c;如图1 命令行执行&#xff1a;pip install django 2、创建Django项目&#xff0c;如图2 django-admin startproject imooc 3、创建Django的应用项目&#xff0c;如图3 必须进入项目文件下执行命令&#xff1a; python3 manage.py startapp app …

✿✿✿JavaScript ---- 函数/js内置对象

目 录 一、函数 自调用函数如下演示&#xff1a; 二、JS中的内置对象 2.Number对象 3.Date 对象 补&#xff1a;第三方的日期工具类 moment.js 4.Math对象 5.数组对象 补&#xff1a;ES6中数组对象新增的方法 6.Global全局方法对象 7.RegExp(**)正则表达式对象 一、…

Word2010入门

Word简介 Microsoft Office Word 2010是微软公司的一个文字处理应用程序。 我们可以利用Word编辑文字、图文排版、建立表格、图形绘制。一直以来&#xff0c;Word都是最流行的文字处理应用程序。 .doc、.docx是Word软件默认存储文件类型&#xff0c; .docx正在逐步取代.doc。…

QT和网络调试助手之间的UDP通信

文章目录一、背景二、实现过程简述UDP协议工作原理及编程模型UDP 接收端UDP 发送端运行UDP接收端和发送端运行UDP发送端发送数据给网络调试助手一、背景 之前一篇博客实现了两个网络调试助手之间的UDP通信。 文章链接&#xff1a;在MacOS上实现两个网络调试助手的UDP通信测试…

西电数据库实验-学生学籍管理系统 数据库设计

西电数据库实验-学生学籍管理系统 数据库设计 文章目录西电数据库实验-学生学籍管理系统 数据库设计需求分析实体集联系集概念结构设计逻辑结构设计实体集department(id‾,name)department(\underline {id},name)department(id​,name)instructor(id‾,name,dept_id)instructor…

如何翻译英文音频?看完你就学会了

在平时的工作中&#xff0c;相信大家应该都会遇到一些不太熟悉的英文或者其它外文的语言&#xff0c;这给我们的生活带来了诸多烦恼&#xff0c;那遇到这种情况&#xff0c;我们应该怎么办呢&#xff1f;其实很简单&#xff0c;我们可以利用一些软件来将这些语言转换成中文&…

SpringCloud系列(三)Nacos 注册中心的搭建及服务发现

在 SpringCloud 系列&#xff08;一&#xff09;里面介绍了 Eureka 注册中心主要用来做什么&#xff0c;如何搭建并进行了简单的测试&#xff0c;但是 Eureka 有诸多不便之处&#xff0c;如需要配合 SpringCloud config 来实现&#xff0c;我们还需要再写一个 Module 进行启动等…

Python安装库教程(解决安装报错)

Python库安装以及报错解决方法 本文章以jieba库和wordcloud库的安装来演示安装以及安装过程报错的解决方法 一. 使用Pycharm安装 1. 没有创建项目&#xff08;创建了直接去往第二步&#xff09; 选择下一步 创建完成 2. 已经创建项目 3. 安装python库报错 如果显示这个就表示…

融云全球社交泛娱乐洞察,老资格的「游戏社交」还有哪些想象空间

一切应用都将社交化。关注【融云全球互联网通信云】回复【融云】抽取高颜值大容量高端可乐保温杯哦~ 融入社交能力&#xff0c;创造增长奇迹。激活用户在不同场景的社交需求&#xff0c;让各类应用焕发出了新的生命力&#xff0c;也让“社交X”成为出海最大的浪。 《2022 社交…

VMware ESXi 8.0 SLIC Unlocker, 集成网卡驱动和 NVMe 驱动

发布 ESXi 8.0 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;VMware ESXi 8.0 SLIC & Unlocker, 集成网卡驱动和 NVMe 驱动&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 发布 …

MYSQL练习题:报告系统状态的连续日期

题目&#xff1a;报告系统状态的连续日期 系统 每天 运行一个任务。每个任务都独立于先前的任务。任务的状态可以是失败或是成功。 编写一个 SQL 查询 2019-01-01 到 2019-12-31 期间任务连续同状态 period_state 的起止日期&#xff08;start_date 和 end_date&#xff09;。…

Spark系列之Spark的数据倾斜

title: Spark系列 第九章 Spark的数据倾斜 9.1 Spark调优概述 ​ 有的时候&#xff0c;我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜&#xff0c;此时 Spark 作业的性能会比期望差很多。数据倾斜调优&#xff0c;就是使用各种技术方案解决不同类型的数据倾斜问题…

安装TensorRT

安装TensorRT 安装可以查看官方文档&#xff1a;Installation Guide :: NVIDIA Deep Learning TensorRT DocumentationThis NVIDIA TensorRT 8.5.1 Installation Guide provides the installation requirements, a list of what is included in the TensorRT package, and ste…