如何以编程方式获取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.
}
}
答案 0 :(得分:0)
由于您仅从快捷方式收到Intent
,因此Intent
需要携带标识其“来源”所需的所有信息。
因此,无论您做什么,Intent
必须具有某些独特的功能。这可以是其“操作”,也可以是您可以添加的任何其他数据。
使Intent
唯一的一种方法是在Intent
数据中包含触发它的快捷方式ID。 (例如,参见How to add data to app shortcut Intent)
另一种选择是通过ShortcutManager.getManifestShortcuts()
检索所有(静态)快捷方式的列表,并找到其ShortcutInfo
与您收到的对象匹配的Intent
对象。但同样,这当然只有在Intent
实际上是给定快捷方式唯一的情况下才能起作用。
还有一个(可能是预期的)选项是让您的代码通过其已知ID来访问快捷方式,就像对GUI元素一样。