首页 > 解决方案 > 如何以编程方式获取快捷方式 ID?

问题描述

如何以编程方式获取shortcutId?

我需要根据下面代码中提供的条件禁用快捷方式,因为我需要获取快捷方式Id。无法获取快捷方式Id

<shortcut
    android:enabled="true"
    android:icon="@drawable/ic_barcode_icon"
    android:shortcutId="bar_code"
    android:shortcutShortLabel="@string/shortcuts_my_bar_code">
    <intent
        android:action="android.intent.action.VIEW.myBarCode"
    />
</shortcut>

private static final String SHORT_CUT_MY_BARCODE = "android.intent.action.VIEW.myBarCode";

private void myBarCodeShortcut() {
    if (SHORT_CUT_MY_BARCODE.equals(getIntent().getAction())) {
        //todo need to get the shortcut id here and disable it.
    }
}

标签: android

解决方案


由于您只收到Intent来自快捷方式Intent的信息,因此需要携带识别其“来源”所需的所有信息。

所以无论你做什么,都Intent必须有一些独特的功能。这可能是它的“动作”,或者您可以添加的任何其他数据。

使Intent唯一的一种选择是在Intents 数据中包含触发它的快捷方式 ID。(参见例如如何将数据添加到应用快捷方式 Intent

另一种选择可能是通过检索所有(静态)快捷方式的列表ShortcutManager.getManifestShortcuts()并找到与您收到ShortcutInfo的匹配的对象。Intent但是同样,这当然只有在Intent给定快捷方式实际上是唯一的情况下才有效。

另一个可能是预期的选项是让您的代码通过其已知 ID 访问快捷方式,就像您使用 GUI 元素一样。


推荐阅读