如何以编程方式获取快捷方式ID?

时间:2019-06-25 07:21:39

标签: android

如何以编程方式获取shortcutId?

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

<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.
    }
}

1 个答案:

答案 0 :(得分:0)

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

因此,无论您做什么,Intent必须具有某些独特的功能。这可以是其“操作”,也可以是您可以添加的任何其他数据。

使Intent唯一的一种方法是在Intent数据中包含触发它的快捷方式ID。 (例如,参见How to add data to app shortcut Intent

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

还有一个(可能是预期的)选项是让您的代码通过其已知ID来访问快捷方式,就像对GUI元素一样。