在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Android 下的广播在Android下,要让我们开发的APP能在开机时自动启动,必须使用到Android系统下的广播。Android广播分为两个方面:广播发送者和广播接收者,通常情况下BroadcastReceiver指的是广播接收者(广播接收器)。 注册广播注册广播有两种方式: 开机的广播Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED”。要实现开机自启动程序,需要先“捕捉”到这个消息,然后再启动你的程序即可,我们要做的是接收这个消息。因为使用动态注册方式,当程序关闭后就不再接收广播信息,所以我们只能使用静态注册方式完成。 重写onReceive方法当我们完成开机广播的监听后,需要在重写的onReceive方法中去实现程序(或服务)启动。 在Delphi下实现Android开机启动注册广播在delphi下要实现开机自动启动需要先在AndroiMainfest.xml中配置广播注册。打开工程中的AndroidManifest.template.xml文件,增加注册内容:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.embarcadero.firemonkey.notifications.FMXNotificationAlarm" /> <!-- 以下这段是广播注册内容 --> <receiver android:name="com.tanqin.startup" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <!-- 注册完成 --> <%activity%> <%receivers%> </application> --------------------- 其中com.tanqin.startup很重要,是接收广播后需要处理的程序指向。因为目前没找到如何在这里可以直接调用Delphi写的类或方法或其他什么(我不否定他以后可能会可以达到这个要求 ,至少现在不行),所以这里只能使用JAVA来处理(也就说我们这里现在必须使用JAR来实现)。 重写onReceive方法这段需要用JAVA来完成,在我上传的Demo中已完成代码并生成JAR文件,方便对JAVA不熟悉的朋友,你可以直接使用这个文件。 下载地址:http://download.csdn.net/detail/tanqth/9888704 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.F MXNativeActivity"); sintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(sintent); } } 其他工作最后,我们需要将JAR引入到Delphi工程中,完成开机启动权限的添加。 使用Demo的说明Demo可以在csdn下载中下载使用,地址:http://download.csdn.net/detail/tanqth/9888704 下载后请注意画框的两个文件: AndroidManifest.template.xml内容: 在工程中增加JAR包: 右键弹出菜单中选择增加: 增加后的情况: 添加开机启动权限 这样,你的APP即可以系统启动后完成自动启动了 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论