• 【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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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

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

  • 相关阅读:
    初识Apifox——如何使用Apifox做一个简单的接口测试
    〔005〕Java 基础之面向对象
    Linux权限
    mac版本 Adobe总是弹窗提示验证问题如何解决
    spdlog记录日志示例 - 使用sink创建logger
    风投机构加持的NFT明星项目,是否值得追逐?
    【密码学】RSA密码体制存在的问题
    多线程之Semaphore原理
    设计模式:适配器模式(C++实现)
    lv5 嵌入式开发-5 线程的创建和参数传递
  • 原文地址:https://blog.csdn.net/huang3513/article/details/126206208