应用程序快捷方式

Posted 小陈乱敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用程序快捷方式相关的知识,希望对你有一定的参考价值。

许多最常用的应用程序都会消耗应用程序快捷方式为用户提供对其最重要功能的轻松访问。

快捷方式类型

如何使用快捷方式传递内容取决于您的用例以及快捷方式的上下文是应用程序驱动的还是用户驱动的。不管快捷方式的上下文是否发生变化,两者静止的和动态快捷方式由应用程序驱动。

如果用户选择希望应用程序向其传递内容的方式,例如使用固定的快捷方式,则用户定义上下文。

以下场景显示了每种快捷方式类型的一些用例:

静态快捷方式:用于在用户交互的整个生命周期内具有一致结构的内容。Instagram正在使用它快速访问帖子、摄像头或直接消息。
动态快捷方式:用于上下文相关的操作。用户在应用程序中执行的操作。例如,如果您正在构建一个允许用户从当前级别开始的游戏,则需要经常更新快捷方式。
固定的快捷方式:用于特定的、用户驱动的操作。最好的例子是从你最喜欢的浏览器固定一个特定的网站。这是有益的,因为它允许用户执行自定义操作。例如,快速导航到特定网站
尽管我们有覆盖所有用例的不同类型的快捷方式,但是我们需要注意一些限制。

局限性
尽管用户可以创建任意多个动态快捷方式,但大多数支持的启动器一次最多显示四个快捷方式。如果应用程序支持动态快捷方式,请谨慎选择静态快捷方式,这样用户仍有一定的空间来创建动态快捷方式。

但是,对于与Google助手一起使用的动态快捷方式,可以使用Google快捷方式集成库来避免这种限制。

注意:如果您想了解有关将动态快捷方式推送到Google Assistant的更多信息,请遵循以下步骤 谷歌代码实验室 .
如果你选择不使用Google快捷方式集成库,你的应用一次只能支持有限数量的快捷方式。

有时,您必须决定是否需要更多静态快捷方式,还是让用户创建动态快捷方式。

要确定启动器支持多少个快捷方式,请使用getMaxShortcutCountPerActivity()中提供的方法

但是,如果你的应用程序支持固定的快捷方式,你就不会受到这些限制。启动器没有最大数量的固定快捷方式。

管理应用程序快捷方式

如您所知,有三种不同类型的快捷方式,用户管理动态快捷方式。

用户可以使用快捷方式执行多个操作:

推:创建新的动态快捷方式。
更新:更新已存在的动态快捷方式。
删除:从列表中删除动态快捷方式。
全部删除:删除所有动态快捷方式。
重新排序:使用rank属性添加/更新动态快捷方式。
重新排序是作为推送或更新操作的副作用而发生的操作。在上访问这些操作ShortcutManagerCompatAPI,它们非常容易使用。

使用快捷方式

在本节中,您将找到所有可用于管理应用程序快捷方式的操作以及如何实现它们。

创建静态快捷方式

现在,您将从创建带有预定义和不可更改操作的静态快捷方式开始。

首先,在物件包装,下xml子文件夹,找到快捷方式.xml归档并打开

在这个文件中,你会发现TODO 1:将替换为以下代码:

<!-- 1 --><shortcut    android:shortcutId="new_note"    android:enabled="true"    android:icon="@drawable/ic_new_note_shortcut"    android:shortcutLongLabel="@string/new_note_long_label"    android:shortcutShortLabel="@string/new_note_short_label">        <!-- 2 -->    <intent        android:action="android.intent.action.VIEW"        android:targetClass="com.yourcompany.quicknotes.screen.notes.NotesActivity"        android:targetPackage="com.yourcompany.quicknotes" />        <intent        android:action="android.intent.action.VIEW"        android:targetClass="com.yourcompany.quicknotes.screen.newnote.NoteActivity"        android:targetPackage="com.yourcompany.quicknotes" />            <!-- 3 -->    <categories android:name="com.yourcompany.quicknotes" />    <!-- 4 -->    <capability-binding android:key="actions.intent.CREATE_NOTE" /></shortcut>

这就是你的代码所做的:

定义快捷方式属性,如ID、启用状态、图标、长标签和短标签。
定义用户选择快捷方式后打开的屏幕。
定义注释所属的类别。
定义将快捷方式与内置意图链接的功能。

您的下一步是向创建静态快捷方式.去文件夹AndroidManifest.xml归档并替换TODO 2。

<meta-data
    android:name="android.app.shortcuts"
    android:resource="@xml/shortcuts" />

您的快捷方式已准备就绪。构建并运行应用程序,进入启动程序并长按应用程序图标。按快捷键,您就可以创建新便笺了!

创建动态快捷方式

动态快捷方式有点棘手,但仍然很容易实现。

如前所述,您需要使用ShortcutManager应用程序编程接口。它是Jetpack库它允许您管理应用程序中的动态快捷方式。它减少了样板代码,而且,最重要的是,确保快捷方式在Android版本中的行为相同。

要添加将创建新的动态快捷方式的功能,请打开ShortcutManagerWrapper.kt归档并替换TODO 3:有了这些代码:

return ShortcutInfoCompat.Builder(context, note.id)
    .setShortLabel(note.title)
    .setLongLabel("See $note.title")
    .setIcon(IconCompat.createWithResource(context, R.drawable.ic_note))
    .setIntents(
        arrayOf(
            NotesActivity.createIntent(context).apply  action = Intent.ACTION_VIEW ,
            NoteActivity.createIntent(context, note.id).apply  action = Intent.ACTION_VIEW 
        )
    )
    .build()

您可以看到动态快捷方式的作用与静态快捷方式相同。不同的是,现在你有了使快捷方式更加上下文敏感的逻辑。

要完全启用创建动态快捷方式,请替换TODO 4:有了这两行代码:

val shortcut = createShortcutInfo(note)ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)

方法pushDynamicShortcut(…)可以:

检查快捷方式的最大数量限制。
根据安卓Verson准备快捷方式。
删除级别最低的快捷方式。
在列表的顶部添加一个新的。
太棒了,你现在可以创建你的第一个动态快捷方式了。构建并运行应用程序,长按创建的便笺,然后长按应用程序图标以显示快捷方式。

更新动态快捷方式

在 快速笔记应用程序,当您打开现有便笺并按右上角的“更新”操作修改内容时,您的快捷方式将更新。

下一个任务是实现它,以便在需要时更新快捷方式。

在ShortcutManagerWrapper.kt文件,查找 TODO 5:并替换为以下内容:

addNoteShortcut(note)

删除动态快捷方式

要删除动态快捷方式,首先需要知道该快捷方式是否已存在。

查找TODO 6:并替换为以下代码块:

override fun isShortcutCreated(noteId: String): Boolean     return ShortcutManagerCompat.getDynamicShortcuts(context)        .find  it.id == noteId  != null

检查动态快捷方式列表中是否存在带有所请求注释的快捷方式。

由于您不希望您的用户在从数据库或服务中删除便笺后有权访问该便笺,因此您也需要删除该快捷方式。

在ShortcutManagerWrapper.kt找到TODO 7:并用以下代码行替换它:

ShortcutManagerCompat.removeDynamicShortcuts(context, listOf(noteId))

很好,用户现在可以创建、更新和删除动态快捷方式,继续尝试。构建并运行应用程序,然后按照以下步骤检查是否一切正常:

创建新便笺
创建动态链接
验证它是通过长按应用程序图标创建的。
更新标题注释
验证它是否已在快捷方式列表中更新。
删除注释
验证快捷方式是否已从快捷方式列表中删除。

创建固定快捷方式

只有一种快捷方式可以实现。创建固定快捷方式与其他快捷方式稍有不同。

查找TODO 8:并将其替换为以下代码段:

// 1if (ShortcutManagerCompat.isRequestPinShortcutSupported(context))     // 2    val pinShortcutInfo = ShortcutInfoCompat.Builder(context, note.id)        .setShortLabel(note.title)        .setIcon(IconCompat.createWithResource(context, R.drawable.ic_note))        .setIntents(            arrayOf(                NotesActivity.createIntent(context).apply  action = Intent.ACTION_VIEW ,                NoteActivity.createIntent(context, note.id).apply  action = Intent.ACTION_VIEW             )        )        .build()    // 3    ShortcutManagerCompat.requestPinShortcut(context, pinShortcutInfo, null)

构建并运行应用程序,长按便笺,然后创建第一个快速便笺快捷方式。
你只需按一下按钮就可以完成当天需要完成的任务、购物车或任何你想记的东西。

以上是关于应用程序快捷方式的主要内容,如果未能解决你的问题,请参考以下文章

键盘用的手感不一样 跟新和旧有啥关系?

使用 Python 的 cx_Freeze 安装程序添加开始菜单快捷方式

PyInstaller 无法更改快捷方式图标

评论快捷方式 Android Studio

如何做一个快捷方式使打开一个软件后自动关闭一个软件

未调用 SiriKit 意图处理程序