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

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);
begin
  Label1.Text := 'S: ' + JStringToString( TAndroidHelper.Activity.getIntent.getAction );
end;

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


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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值