我正在尝试使用ShortcutManager在主屏幕上创建固定的快捷方式。我可以使用以下代码创建固定的快捷方式:
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse("www.google.com"));
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)){
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, "#1")
.setIntent(i)
.setShortLabel("label")
.setIcon(IconCompat.createWithResource(context, R.drawable.ic_launcher))
.build();
ShortcutManagerCompat.requestPinShortcut(context, shortcutInfo, null);
}else{
L.v("Shortcut", "Pinned shortcuts are not supported!");
}
我面临两个问题:
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse("www.google.com"));
Intent installer = new Intent(); installer.putExtra("android.intent.extra.shortcut.INTENT", i); installer.putExtra("android.intent.extra.shortcut.NAME", "Shortcut name"); installer.putExtra("android.intent.extra.shortcut.ICON_RESOURCE", Intent.ShortcutIconResource.fromContext(getApplicationContext() , R.drawable.ic_launcher));
installer.putExtra("duplicate", false);
installer.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(installer);
这段代码的问题是,它无法在android 8.0及更高版本中运行,但可以使用以下代码正确处理快捷方式的重复:-
installer.putExtra("duplicate", false);
我想使用快捷方式管理器实现相同的目的
我已经查看了此处提供的解决方案,但到目前为止还没有运气:-
Strange app icon duplication in pinned shortcut (Android O)
任何想法?
答案 0 :(得分:0)
您可以通过调用
获得所有当前的快捷方式 List<ShortcutInfo> currPinned = shortcutManager.getPinnedShortcuts();
然后将其添加到Map
或Set
并对其进行迭代,如果已经存在,则不要再次添加
if (currPinned != null) {
for (ShortcutInfo shortcut: currPinned) {
currPinnedMap.put(shortcut.getId(), shortcut);
}
}
....
//iterate over you "new shortcuts" and check if the present already
if (currPinnedMap.containsKey(id)) {
continue;
}
// add really new ones