【Android】如何实现App的快捷方式的创建、添加与管理呢?

前言

作为开发者,您可以定义快捷方式,以便在您的应用中执行特定操作。这些快捷方式可在受支持的启动器或助理(如 Google 助理)中显示,方便用户快速启动应用中的常见任务或推荐任务;

1. 应用快捷方式概览

1.2 快捷方式的类型

每个快捷方式都会引用一个或多个 intent,每个 intent 都会在用户选择相应快捷方式时在应用中启动特定操作。您为应用创建的快捷方式的类型取决于应用的主要用例。 下面列出了几种可设为快捷方式的操作示例:

  1. 在电子邮件应用中撰写新电子邮件
  2. 在地图应用中将用户导航到特定位置
  3. 在通讯应用中向朋友发送消息
  4. 在媒体应用中播放下一集电视节目
  5. 在游戏应用中加载上一个存档点
  6. 使用语音指令在外卖应用中订购饮料

注意:只有处理 Intent.ACTION_MAIN 操作和 Intent.CATEGORY_LAUNCHER 类别的主 activity 可以拥有快捷方式。如果应用有多个主 activity,则您需要为每个 activity 定义一组快捷方式。

您可以为应用发布以下类型的快捷方式:

  1. 静态快捷方式在封装到 APK 或 app bundle 内的资源文件中定义。
  2. 动态快捷方式仅在运行时由应用推送、更新和移除。
  3. 固定快捷方式可在运行时添加到受支持的启动器,前提是征得用户同意。

注意:用户还可以自行创建固定快捷方式,只需将应用的静态和动态快捷方式复制到启动器上即可。

如下图:借助应用快捷方式,您可以即时呈现关键操作并让用户直接进入应用中的深层界面

快捷方式

1.2 使用功能 (capability) 在 Google 助理中显示快捷方式

shortcuts.xml 中的功能可让您声明用户启动应用时可以执行的操作类型,并直接跳转到执行特定任务的界面。例如,您可以通过声明将应用内功能扩展至 Google 助理与应用有关的 Action 的 capability 元素,允许用户通过 Google 助理对您的应用进行语音控制。

1.3 快捷方式限制

大多数受支持的启动器一次最多可显示四个快捷方式,包括静态和动态快捷方式。推送在 Google 产品界面(例如 Google 助理)上显示的动态快捷方式时,请使用 Google 快捷方式集成库,以避免受制于快捷方式限制。

2. 创建快捷方式

快捷方式可帮助用户快速访问您的应用的某些部分,从而为他们呈现特定类型的内容。

您要如何以快捷方式来呈现内容取决于您的用例,以及快捷方式的上下文是属于应用驱动型还是用户驱动型。虽然静态快捷方式的上下文不会更改,而动态快捷方式的上下文会不断变化,但这两种情况下的上下文都由您的应用驱动。如果用户选择了希望应用以哪种方式(例如使用固定快捷方式)向其呈现内容,则此时的上下文是由用户定义的。以下场景展示了各类快捷方式的一些用例:

  • 静态快捷方式最适合在用户与应用互动的整个生命周期内使用一致结构链接到内容的应用。由于大多数启动器一次只能显示四个快捷方式,因此静态快捷方式对常见 Activity 非常有用。例如,如果用户希望以特定的方式查看他们的日历或电子邮件,使用静态快捷方式可确保他们在执行日常任务时始终获得一致体验。
  • 动态快捷方式用于应用中与上下文相关的操作。上下文相关快捷方式是专为用户在应用内执行的操作而定制的。例如,如果您构建的游戏允许用户在启动时从当前关卡开始,您需要经常更新该快捷方式。动态快捷方式允许游戏在每次用户通关后更新快捷方式。
  • 固定快捷方式用于用户驱动的特定操作。例如,用户可能需要将特定网站固定到启动器。这很有用,因为它允许用户执行自定义操作,比如一步导航到网站,这比使用浏览器的默认实例速度更快。

2.1 创建静态快捷方式

静态快捷方式提供指向应用内常规操作的链接,这些操作在应用当前版本的生命周期内应保持一致。适合使用静态快捷方式的操作包括查看已发邮件、设置闹钟以及显示用户当天的锻炼活动。

如需创建静态快捷方式,请按顺序完成以下步骤:

  1. 在应用的清单文件 (AndroidManifest.xml) 中,找到 intent 过滤器设置为 android.intent.action.MAIN 操作和 android.intent.category.LAUNCHER 类别的 Activity。
  2. 向此 Activity 添加 < meta-data> 元素,该元素引用了定义应用快捷方式的资源文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.myapplication">
  <application ... >
    <activity android:name="Main">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      
      <meta-data android:name="android.app.shortcuts"
                 android:resource="@xml/shortcuts" /> 
    </activity>
  </application>
</manifest>
  1. 创建新的资源文件:res/xml/shortcuts.xml
  2. 在这个新的资源文件中,添加 < shortcuts> 根元素,其中包含 < shortcut> 元素的列表。每个 < shortcut> 元素都包含有关一个静态快捷方式的信息,包括其图标、说明标签及其在应用内启动的 intent
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <shortcut
    android:shortcutId="compose"
    android:enabled="true"
    android:icon="@drawable/compose_icon"
    android:shortcutShortLabel="@string/compose_shortcut_short_label1"
    android:shortcutLongLabel="@string/compose_shortcut_long_label1"
    android:shortcutDisabledMessage="@string/compose_disabled_message1">
    <intent
      android:action="android.intent.action.VIEW"
      android:targetPackage="com.example.myapplication"
      android:targetClass="com.example.myapplication.ComposeActivity" />
    <!-- If your shortcut is associated with multiple intents, include them
         here. The last intent in the list determines what the user sees when
         they launch this shortcut. -->
    <categories android:name="android.shortcut.conversation" />
    <capability-binding android:key="actions.intent.CREATE_MESSAGE" />
  </shortcut>
  <!-- Specify more shortcuts here. -->
</shortcuts>

2.1.1 自定义属性值

以下列表介绍了静态快捷方式内的不同属性。 您必须为 android:shortcutIdandroid:shortcutShortLabel 提供值。其他所有的值均为可选。

  1. android:shortcutId:这是一个字符串字面量,表示 ShortcutManager 对象对其执行操作时的快捷方式。

注意:不能将此属性的值设置为资源字符串(例如 @string/foo)。

  1. android:shortcutShortLabel:这是用于简短说明快捷方式用途的词组。请尽可能将快捷方式的“简短说明”的长度限制在 10 个字符以内。

注意:此属性的值必须为资源字符串,例如 @string/shortcut_short_label。

  1. android:shortcutLongLabel:这是用于详细说明快捷方式用途的词组。如果空间足够大,启动器会显示此值,而不是 android:shortcutShortLabel。 请尽可能将快捷方式的“详细说明”的长度限制在 25 个字符以内。

注意:此属性的值必须为资源字符串,例如 @string/shortcut_long_label。

  1. android:shortcutDisabledMessage:这是当用户尝试启动已停用的快捷方式时出现在支持的启动器中的消息。此消息应向用户解释快捷方式现在停用的原因。 如果 android:enabled 为 true,则此属性的值无效。

注意:此属性的值必须为资源字符串,例如 @string/shortcut_disabled_message。

  1. android:enabled:这用于确定用户是否能够与支持的启动器中的快捷方式进行交互。 android:enabled 的默认值为 true。 如果您将其设置为 false,则还应设置 android:shortcutDisabledMessage,用于说明停用该快捷方式的原因。如果您认为自己不需要提供此类消息,最简单的做法就是从 XML 文件中完全移除该快捷方式。

  2. android:icon:这是启动器向用户显示快捷方式时所用的位图或自适应图标。此值可以是某个图片的路径,也可以是包含相应图片的资源文件。请尽可能使用自适应图标来提高性能和一致性。

注意:快捷方式图标不能包含色调。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android应用开发 》实验报告 实验序号:04           实验项目名称:微信朋友圈布局页面 "学  号" "姓  名" "专业、班 " " "实验地点" "指导教师" "实验时间 " " "实验目的及要求 " "1、熟悉Eclipse集成开发的步骤; " "2、使用Android制作一个应用程序,实现在屏幕中显示微信朋友圈页面。 " "二、实验设备(环境)及要求 " "1、winXP虚拟机; " "2、Eclipse集成开发环境。 " "三、实验内容与步骤 " "1)在Eclipse中创建Android项目,名称为friends; " "(2)修改新建项目的res/layout目录下的布局文件activity_main.xml,将" "默认添加的布局代码修改为垂直线性布局管理器,并且删除上、下、左、右" "内边距的设置代码,然后将默认添加的文本框组件删除; " "(3)在步骤(2)中添加的垂直线性布局管理器中,添加一个用于显示第一" "条朋友圈信息的相对布局管理器,然后在该布局管理器中添加一个显示头像" "的图像视图组件(ImageView),让它与父容器左对齐; " "(4)在头像ImageView组件的右侧添加3个文本框组件,分别用于显示发布 " "人、内容和时间; " "(5)在内容文本框的下方,与父窗口右对齐的位置添加一个ImageView组件" ",用于显示评论图标; " "(6)在相对布局管理器的下面添加一个ImageView组件,显示一个分隔线;" "(7)按照步骤(3)到步骤(5)的方法添加显示第二条朋友圈信息的代码 " "; " "(8)完成以上操作后,在"包资源管理器"中的项目名称节点上,单击鼠标 " "右键,在弹出的快捷菜单中,选择"运行方式/Android " "Application"菜单项通过模拟器运行程序。 " "四、程序调试(结果及分析) " " " "五、总结与体会 " "通过这次实验,知道了安卓界面布局的各种相关布局方式的,能够使用垂直" "线性布局及相对布局方式,设计"朋友圈"; " "通过这次实验,知道如何向安卓项目中导入图片,以及如何设置各个组件的" "位置,设置文字的颜色,对于安卓项目的页面设计有了更深的认识。 " "六、教师评语 "成绩 " "签名: " " "日期: " " 附关键代码: 1. Xml代码: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" tools:layout_editor_absoluteX="10dp"> <ImageView android:id="@+id/icol" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_margin="10dp" android:src="@drawable/v_ico1" /> <TextView android:id="@+id/name1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_toEndOf="@id/icol" android:text="雪绒花" android:textColor="#576B9

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DT向着太阳迎着光

您的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值