如何以编程方式获取快捷方式 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 元素一样。