博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi XE开发 Android 开机自动启动
阅读量:5104 次
发布时间:2019-06-13

本文共 2111 字,大约阅读时间需要 7 分钟。


 

Android 下的广播

在Android下,要让我们开发的APP能在开机时自动启动,必须使用到Android系统下的广播。Android广播分为两个方面:广播发送者和广播接收者,通常情况下BroadcastReceiver指的是广播接收者(广播接收器)。

要使广播生效必须先注册广播,实现注册就是告诉系统:要监听什么广播,和监听到之后要做什么动作完成什么工作(自定义广播重写onReceive)。

注册广播

注册广播有两种方式:

1、动态注册(在代码中注册):
通过代码手工注册。当程序关闭时,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。必须在程序运行中才能接收广播。
2、静态注册(在AndroiMainfest.xml中配置):
Android不能自动销毁该类广播接收器,也就是说当应用程序关闭后,还是会接收广播。

开机的广播

Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED”。要实现开机自启动程序,需要先“捕捉”到这个消息,然后再启动你的程序即可,我们要做的是接收这个消息。因为使用动态注册方式,当程序关闭后就不再接收广播信息,所以我们只能使用静态注册方式完成。

重写onReceive方法

当我们完成开机广播的监听后,需要在重写的onReceive方法中去实现程序(或服务)启动。

在Delphi下实现Android开机启动

注册广播

在delphi下要实现开机自动启动需要先在AndroiMainfest.xml中配置广播注册。打开工程中的AndroidManifest.template.xml文件,增加注册内容:

 

<%activity%> <%receivers%> ---------------------

其中com.tanqin.startup很重要,是接收广播后需要处理的程序指向。因为目前没找到如何在这里可以直接调用Delphi写的类或方法或其他什么(我不否定他以后可能会可以达到这个要求 ,至少现在不行),所以这里只能使用JAVA来处理(也就说我们这里现在必须使用JAR来实现)。

重写onReceive方法

这段需要用JAVA来完成,在我上传的Demo中已完成代码并生成JAR文件,方便对JAVA不熟悉的朋友,你可以直接使用这个文件。

下载地址:

package com.tanqin;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Intent;import android.content.Context;public class startup extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent)         {           Intent sintent = new Intent();           sintent.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity");           sintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);           context.startActivity(sintent);          }}

其他工作

最后,我们需要将JAR引入到Delphi工程中,完成开机启动权限的添加。

使用Demo的说明

Demo可以在csdn下载中下载使用,地址:

下载后请注意画框的两个文件:

这里写图片描述

AndroidManifest.template.xml内容:

这里写图片描述

在工程中增加JAR包:

右键弹出菜单中选择增加: 

这里写图片描述

增加后的情况: 

这里写图片描述

添加开机启动权限

这里写图片描述

这样,你的APP即可以系统启动后完成自动启动了

转载于:https://www.cnblogs.com/m0488/p/9740354.html

你可能感兴趣的文章
centos7配置yum源
查看>>
winform textbox提示历史记录
查看>>
SSM整合(spring mybatis)图书
查看>>
Linux学习笔记--终端命令
查看>>
关于电脑桌面图标消失并且右键无法点击的情况
查看>>
JAVA窗口2
查看>>
【Alpha】第八次Scrum meeting
查看>>
学习进度条11
查看>>
剑指offer之【树的子结构】
查看>>
Http协议中常用字段总结(不定时完善中)
查看>>
大道至简——第二章读后感
查看>>
线程的分离与结合
查看>>
混沌数学之Arnold模型
查看>>
判断一个数是偶数还是素数 做相应处理并排序输出
查看>>
进制转换问题
查看>>
Docker 容器的数据管理
查看>>
驱动相关Error
查看>>
补坑:Prufer 编码总结
查看>>
mysql单节点大事务限制是哪个参数_java面试题汇总 转自多处
查看>>
ORACLE- PLSQL 游标的几种使用情况
查看>>