Я пытаюсь создать закрепленный ярлык на рабочем столе с помощью 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);
Я хочу добиться того же, используя диспетчер ярлыков
- Когда ярлык создается с помощью диспетчера ярлыков, значок дублируется, как
Я просмотрел представленное здесь решение, но пока не повезло: -
Странное дублирование значка приложения в закрепленном ярлыке (Android O)
Любые идеи??