Delphi如何向FMX应用程序添加Android“应用程序快捷方式” ?从Android 7.1(API级别25,Delphi 10.3 Rio版本开箱即用)开始,操作系统(特别是OS应用程序)支持新功能启动器以及大多数其他启动器):应用快捷方式。 您可以在Android官方文档的此位置找到有关此Android功能的所有详细信息。屏幕截图显示了应用程序快捷方式(来自Android的官方文档)为什么要处理应用程序快捷方式?

当应用程序包含一个或多个主要活动时,快捷方式可能会非常有用,并且使用特定的快捷方式来启动应用程序并跳转至应用程序内的特定活动可能会给用户带来好处。还应考虑到大多数启动器(从默认启动器开始)将通过长按应用程序的图标让用户手头拥有此快捷方式,并有机会在主屏幕上创建类似于应用程序的图标以触发快捷方式。

带有快捷方式的热门应用示例:GMail,Google Maps,WhatsApp,SlHangout,Sack等(从今天开始,也许也属于您:)…

在有关FMX移动开发的一对一培训课程中,我的一位客户要求将此特定功能(于2016年末在Android 7.1 Nougat中引入)在FMX应用中实现,因此我深入研究了这个主题(在iOS端也有一个同名兄弟,名为“ 3D touch”,于2015年在iOS9中引入)。

在此博客文章中,我们将通过4个简单步骤介绍如何向您的Android FMX应用程序添加静态快捷方式。我计划在这个主题上进行更多的扩展(可能在我即将出版的FMX书中,或者在我在意大利的办公室举行的移动开发研讨会上,或者在计划于明年5月8日在德国科隆举办的Delphi活动中,例如Delphi Code Camp),涵盖了动态快捷方式生成以及iOS方面。

现在,我们将从一个空的FMX应用开始,并将一个静态快捷方式添加到该应用。

步骤1:编辑您的Manifest.xml文件

更好的说,编辑您的AndroidManifest.template.xml文件,在intent-filter元素的结束标记之后的活动标记内添加以下行。

(...)</intent-filter>
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
</activity>

AndroidManifest.template.xml文件将IDE可以使用它来编译将在最终APK中提供的实际Manifest.xml文件。用户设备的应用启动器将查找此信息,以描述您应用的应用快捷方式。

基本上,我们只是引入对另一个XML文件(shortcuts.xml)的引用,我们将在一个适当的文件夹中创建该文件,如下一步所示。

第2步:创建您的quicks.xml文件

稍后我们将看到,文件系统上的位置并不重要,但是例如,您可以将其放置在项目根文件夹中,位于AndroidManifest.template.xml的旁边。 IDE应该已经为您创建了。

<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android";>
<shortcut
android:shortcutId="myshortcut1"
android:enabled="true"
android:icon="@drawable/andreamagni_128"
android:shortcutShortLabel="@string/my_shortcut1"
android:shortcutLon_gLabel="@string/my_shortcut1"
android:shortcutDisabledMessage="@string/my_shortcut1_disabled">
<intent
android:action="android.intent.action.MYACTION1"
android:targetPackage="com.embarcadero.Project1"
android:targetClass="com.embarcadero.firemonkey.FMXNativeActivity"/>
<categories android:name="android.shortcut.conversation"/>
</shortcut>
</shortcuts>

请注意:

您需要提供唯一的(在您的应用内)shortcutId值,字符串文字(不是re;
shortcutShortLabel(最好少于10个字符)和shortcutLongLabel(最好少于25个字符)的值是对资源字符串的引用(我们将在本博文的下一步中看到如何为这些条目提供值);
有一个intent元素,您可以在其中指定action属性。然后,颈椎枕此信息将包含在您的应用可能检查以确定已触发哪个快捷方式的意图信息中;

同样,相同的intent元素具有必须与应用程序包名称匹配的targetPackage属性(因此请确保相应地将此值更改为您的Delphi项目的名称);

到目前为止,category元素对我来说还是有点困惑:据我了解(请参见本页),只有一个允许的值(对话),并且它是在API级别25中引入的(在API级别中应该有更多可用的值)更高的API级别)。
icon属性的值为“ @ drawable / andreamagni_128”:我将使用128×128 PNG文件(带有我的个人资料图片之一)作为快捷方式的图标,稍后我们将看到如何在其中包含实际的PNG APK。
步骤3:创建您的strings.xml文件

再次,它在文件系统上的位置并不重要,但是例如,您可以将其放置在项目根文件夹中,即IDE应该为其创建的AndroidManifest.template.xml旁边。您和在步骤2中创建的shortcuts.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="my_shortcut1">Andrea</string>
<string name="my_shortcut1_disabled">Shortcut is disabled</string>
</resources>

步骤4:配置部署

现在我们已经创建了这两个额外的xml文件(shortcuts.xml和strings.xml),我们需要在最终部署(APK的构建)中正确包含它们。我们可以在IDE的“部署”页面(项目->部署)中添加它们,并管理它们在Android平台上的部署。请注意:

我已经编辑了“ Remote Path”值,为strings.xml文件指定了“ res \ values \”,为shortcuts.xml文件指定了“ res \ xml \”(不带引号);
andreamagni_128.png图片的条目具有“ res \ drawable \”作为“远程路径”值。

仅此而已...真的吗?

不,不是。但这是为您的应用程序实际定义(静态)快捷方式所需要的。

如果您在Android 7.1+设备上使用启用了快捷方式的启动器(例如,带有默认启动器的Nexus 5X)在Android 7.1+设备上构建和部署,您将可以长按该应用程序图标并显示快捷方式。

您甚至可以在主屏幕上拖动快捷方式,以在屏幕上显示一个单独的图标来触发您的快捷方式。

这是一个简短的视频,显示了如何显示快捷方式列表以及将快捷方式之一拖动到主屏幕,以便为该快捷方式创建永久性图标。

现在,您可能会问自己如何在应用程序级别处理快捷方式,这意味着如何知道您的应用程序是正常启动还是通过某个快捷方式启动。

在应用程序中处理快捷方式

为了知道您的应用程序是如何启动的(是否触发了快捷方式),您可以检查操作系统调用以启动应用程序的意图的动作值。它将包含指定为触发的快捷方式的操作属性的值(如果应用已通过快捷方式启动),在我们的示例中为“ android.intent.action.MYACTION1”。下面的代码是一个非常基本的例子,如何达到这个值:

uses
Androidapi.JNI.App, Androidapi.JNI.JavaTypes,
Androidapi.Helpers;procedure TForm1.FormCreate(Sender: TObject);
beginLabel1.Text := 'S: ' + JStringToString( TAndroidHelper.Activity.getIntent.getAction );
end;

然后由您决定从应用程序的角度来处理这种情况。如果您的应用程序具有多个视图(即,在其上具有标签控件,则您可能希望显示特定项目,加载某些特定数据,执行操作…)。

结束语
应用程序快捷方式是Android操作系统的强大功能,在业务应用程序中可能非常有用。它们可以提高您应用程序的总体可用性,因为您可以提供一种方便快捷的方法来访问应用程序内置的某些功能。

关于这个第一个/基本示例,有很多主题,我想进一步研究一下,但是时间有限,而且我的工作进度很繁忙。因此,我希望您喜欢这个,如果对此有任何疑问,请告诉我。 欢迎加入Delphi知识局QQ群:32422310

Delphi 10.3 Rio实现FMX应用APP增加Android“应用程序快捷方式”相关推荐

  1. Delphi 10.3.3 演示FMX TBitmap.Canvas绘图属性和方法

    这个例子展示了如何使用TBitmap.Canvas属性.这个示例在图像上绘制了一个矩形. 要构建和测试这个例子,请创建一个多设备应用程序--Delphi,然后将下一个对象添加到表单中. 一个TImag ...

  2. Delphi 10.4利用CreateMutex函数创建互斥对象实例防止程序中多次执行该对象

    windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子. 需要用到的函数CreateMut ...

  3. Android APP开机启动,安卓APP开发自启动,安卓启动后APP自动启动 Android让程序开机自动运行APP

    让APP在安卓系统启动自动运行可以带来以下几个好处: 用户方便:当用户打开设备时,自动启动所需的APP可以让用户更方便地使用设备,不必手动打开APP. 提高用户黏性:自动启动APP可以让用户更快地开始 ...

  4. Delphi 10.4.2 轻松实现Android/IOS txt小说电子书阅读器应用APP翻页效果

    Delphi 10.4.2是最新版本的跨平台本机应用开发工具,一套代码可编译到五个操作系统上:iOS.Android.Windows.macOS 和 Linux: 本代码仅仅数十行即可轻松实现Andr ...

  5. 再谈Delphi 10.4.2 FMX应用程序事件TApplicationEvent

    再谈Delphi 10.4.2 FMX应用程序事件TApplicationEvent 直接上个以前的测试代码,一看就明白: function TfmxMainUI.AppEvent(AAppEvent ...

  6. RAD Studio Delphi 10.4在Windows,Android,iOS,macOS和Linux上更快地可视化开发APP应用软件及新增功能详解

    RAD Studio 10.4的新增功能 RAD Studio 10.4提供了显着增强的高性能本机Windows支持,通过出色的快速代码完成功能提高了生产率,通过托管记录提高了代码速度,并在现代多核C ...

  7. Delphi 10.4.2 Android 64位发布格式之App Bundle格式aab

    目录 Delphi 10.4.2 Android 64位发布格式之App Bundle格式aab 1.Android 64位新规则 2.D10.4.2的Android 64位发布结果 Delphi 1 ...

  8. Delphi 10 Seattle小票打印控件TQ_Printer

    TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用). TQ_Printrer控件让 ...

  9. Delphi 10.3 Web应用开发B/S框架介绍(一):uniGUI

    导言:很多人想当然的认为Delphi不能开发B/S WEB应用,其实Delphi发展到现在10.3,一直在不断的进步,Delphi不但巩固了Windows本机软件开发领域的王者地位,更扩展到了安卓.I ...

  10. delphi 10 seattle 中 解决IOS 9 限制使用HTTP 服务问题

    IOS 9 于17号早上正式开始推送,早上起来立马安装,这次升级包只有1G, 安装空间也大大降低(想起IOS 8 升级时,几乎把手机里面的东西删光了,满眼都是泪). 虽然安装后,网上几乎是铺天盖地的吐 ...

最新文章

  1. centos6.9安装Tomcat8.0.36
  2. word文档无法连接服务器,sql数据库无法连接服务器解决办法绝对有效
  3. Codeforces 336C 0-1背包
  4. zs040蓝牙模块使用方法_三菱CCLINK-IE网络模块使用方法
  5. 计算机 java_Java程序到底是如何运行的?
  6. mootools框架【十】-mootools深层探讨
  7. [html] 说说你对WEB标准和W3C的理解与认识?
  8. android音乐进度条设计代码,【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等...
  9. Windows 创建符号链接
  10. 程序员年纪越大,工作被取代性越强
  11. SAP License:国网面试手记
  12. 深圳市龙岗职业技术学校录取分数线计算机,深圳市龙岗区第二职业技术学校2021年招生录取分数线...
  13. 腾讯牵线,美团欲37亿美元收购摩拜?
  14. 【POJ 1860】Currency Exchange
  15. jsonp和ajax的区别,dataType jsonp和JSON之间的区别
  16. 机器学习算法工程师面试问题汇总(持续更新)
  17. php怎么在图片上加文字居中,php GD库为图片添加文字且自动换行,水平居中
  18. 腾讯QQ2019最新版 v9.1.0(24712) 免安装绿色版 显IP去广告完整版
  19. UVA11210 Chinese Mahjong
  20. java 企业号 临时素材_【fastweixin框架教程8】微信企业号临时素材管理

热门文章

  1. Java设计模式总结
  2. 进程调度算法-先来先服务、最短作业优先调度算法和高响应比优先调度算法
  3. sql盲注 解决_sql盲注解决方案.docx
  4. STM32F103单片机跑马灯程序/寄存器
  5. unzip 命令巧用举例
  6. imnoise, imnoise2 imnoise3
  7. 网格搜索、随机搜索机器学习实战
  8. 查找所引用的文献在某种期刊下的引用格式(引用风格)
  9. 目前数据可视化工具软件的排名
  10. 读取excel数据,根据word模板生成word文件。【python】【word vba】两种方法