从Android O开始,可以创建固定的快捷方式,在支持的启动器上显示一个对话框来确认它们的创建:
ShortcutInfoCompat pinShortcutInfo = new ShortcutInfoCompat.Builder(context, uniqueShortcutId)
.setShortLabel(label)
.setIntent(shortcutIntent)
.setLongLabel(label)
.setIcon(IconCompat.createWithBitmap(bitmap))
.build();
ShortcutManagerCompat.requestPinShortcut(this, pinShortcutInfo , null);
文档:
https://developer.android.com/reference/android/content/pm/ShortcutManager.html https://developer.android.com/guide/topics/ui/shortcuts.html
有时,固定的快捷方式不再相关。例如,它指向不再存在的东西。
在这种情况下,我希望能够将其删除。
我认为下一个代码可以实现这一点,但它没有,因为它可能是关于动态快捷方式,这是其他的:
ShortcutManager shortcutManager = (ShortcutManager) getSystemService(SHORTCUT_SERVICE);
final List<ShortcutInfo> pinnedShortcuts = shortcutManager.getPinnedShortcuts();
final ArrayList<String> shortcutIdsToRemove = new ArrayList<>();
for (ShortcutInfo pinnedShortcut : pinnedShortcuts) {
final Intent pinnedShortcutIntent = pinnedShortcut.getIntent();
shortcutIdsToRemove.add(pinnedShortcut.getId());
}
shortcutManager.removeDynamicShortcuts(shortcutIdsToRemove);
// this also doesn't work : shortcutManager.disableShortcuts(shortcutIdsToRemove);
如何删除固定的快捷方式?它甚至可能吗?
更新:似乎不可能,正如Google提到here。
到目前为止,这个API对我来说似乎非常有限,因为它有很多缺点:
所以,我现在的问题是:
有没有办法使用以前的API,使用adb命令创建和删除快捷方式,如果需要,可以使用root?
是否可以使用adb命令删除特定的固定快捷方式,如果需要可以使用root?
答案 0 :(得分:1)
disableShortcuts()是您所能做的最好的事情。当用户尝试选择禁用的快捷方式时,它将向用户显示一条自定义错误消息。
快捷方式限制 尽管您一次可以为您的应用一次发布多达五个快捷键(静态和动态快捷键组合),但是大多数启动器只能显示四个。
但是,用户可以创建的应用程序固定快捷方式的数量没有限制。即使您的应用无法删除固定的快捷方式,也可以禁用它们。
由于您的应用及其用户可以将快捷方式固定到设备的启动器,因此这些固定的快捷方式可能会将用户引导至您应用内已过时或不再存在的操作。要管理这种情况,您可以通过调用disableShortcuts()禁用用户不希望选择的快捷方式,该功能将从静态和动态快捷方式列表中删除指定的快捷方式,并禁用这些快捷方式的任何固定副本。您也可以使用此方法的重载版本,该版本接受CharSequence作为自定义错误消息。当用户尝试启动任何禁用的快捷方式时,该错误消息就会出现。
注意:如果在更新应用程序时删除了某些应用程序的静态快捷方式,系统将自动禁用这些快捷方式。