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



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

我需要根据以下代码中提供的条件禁用快捷方式,为此我需要获取快捷方式 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.
}
}

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

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

使Intent唯一的一个选项是在Intent数据中包含触发它的快捷方式 ID。(例如,请参阅如何将数据添加到应用程序快捷方式意图)

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

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

最新更新