android - 在没有新的静态/动态快捷方式的情况下获取快捷方式
问题描述
我正在从系统中检索所有可能的快捷方式,如下所示:
val pm = context.getPackageManager()
val shortcutsIntent = Intent(Intent.ACTION_CREATE_SHORTCUT)
val ril = pm.queryIntentActivities(shortcutsIntent, 0)
// I progress this data and show my users a custom dialog with apps
// and possible shortcuts and then will start the shortcut setup with ACTION_CREATE_SHORTCUT intent
这里的问题是,在 android O 或更高版本上,例如上面还返回新的静态快捷方式 - 据我所知,应用程序需要成为默认启动器。我可以以某种方式过滤掉它们吗?
我有一个类似应用程序的侧边栏,只能支持普通快捷方式,并且由于缺少权限而不能支持较新的静态/动态快捷方式...
例子
Gmail 例如提供标签的快捷方式——我在上面得到了这个可能的快捷方式。但是,如果我开始设置如下快捷方式
val i = Intent(Intent.ACTION_CREATE_SHORTCUT)
i.addCategory(Intent.CATEGORY_DEFAULT)
i.component = ComponentName(packageName, activityName)
startActivityForResult(i, RequestCodes.SHORTCUT_CREATE_REQUEST_CODE)
并等待结果,我不会在其中返回一个Intent
with Intent.EXTRA_SHORTCUT_INTENT
(以及所有其他人喜欢的Intent.EXTRA_SHORTCUT_ICON
,...),而是一个 withLauncherApps.EXTRA_PIN_ITEM_REQUEST
在其中。但这为时已晚,我想从上面的列表中删除这个快捷方式,因为我知道我的应用程序由于缺少权限而无法启动这样的快捷方式......
解决方案
推荐阅读
- javascript - JavaScript 正则表达式。将html解析为文本
- opencv - opencv solvePnP,所有轴看起来都不错,除了 Y
- javascript - 计算前端不安全的价格?
- kubernetes - Kubernetes RBAC - 禁止尝试授予额外权限
- python - 使用 Selenium 在 python 中的 WebScraping 问题
- c++ - 使用 std::vector 迭代器和调整大小/保留的奇怪/有趣的行为
- bash - shell脚本中的命令在线参数
- lambda - “无法转换对象 keras”:如何正确实现这一层?
- abap - 比 CL_GUI_BTFEDITOR 性能更高的富文本控件?
- xml - Ontology OWL 从 Excel 导入 XML