android - 如何以编程方式获取快捷方式 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.
}
}
解决方案
由于您只收到Intent
来自快捷方式Intent
的信息,因此需要携带识别其“来源”所需的所有信息。
所以无论你做什么,都Intent
必须有一些独特的功能。这可能是它的“动作”,或者您可以添加的任何其他数据。
使Intent
唯一的一种选择是在Intent
s 数据中包含触发它的快捷方式 ID。(参见例如如何将数据添加到应用快捷方式 Intent)
另一种选择可能是通过检索所有(静态)快捷方式的列表ShortcutManager.getManifestShortcuts()
并找到与您收到ShortcutInfo
的匹配的对象。Intent
但是同样,这当然只有在Intent
给定快捷方式实际上是唯一的情况下才有效。
另一个可能是预期的选项是让您的代码通过其已知 ID 访问快捷方式,就像您使用 GUI 元素一样。
推荐阅读
- python - 安静 IDE 的 Python requirements.txt 别名
- python - Python - 基于其他列条件的新列
- javascript - Javascript动态复选框值作为数组
- python - ValueError:没有为任何变量提供梯度——Keras/Tensorflow
- elasticsearch - 添加节点以制作本地集群 Elasticsearch [7.8]
- generics - Rust image::SubImage,没有为类型找到名为“put_pixel”的方法?
- python - 部分加载 Pickle/Cloudpickle 文件,无需模块和类
- r - 使特定变量的值出现在 R df 列中,作为另一列中文本的条件
- python - 该代码在我的计算机上有效,但在服务器上无效
- python - 如何将字节转换为数据框中条目的字符串(Python)?