@TargetApi(Build.VERSION_CODES.N_MR1) public static void disablePostShortcut(@NonNull Context context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) return; ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class); shortcutManager.disableShortcuts(DYNAMIC_SHORTCUT_IDS); }
@RequiresApi(25) private static void setShortcuts(@NonNull Context context) { ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class); if (createShortcuts == null) { shortcutManager.removeAllDynamicShortcuts(); } else { //noinspection TryWithIdenticalCatches try { final Object returnValue = createShortcuts.invoke(generated, context); @SuppressWarnings("unchecked") List<List<ShortcutInfo>> shortcuts = (List<List<ShortcutInfo>>) returnValue; List<ShortcutInfo> enabledShortcuts = shortcuts.get(0); List<String> disabledShortcutsIds = new ArrayList<>(); for (final ShortcutInfo shortcutInfo : shortcuts.get(1)) { disabledShortcutsIds.add(shortcutInfo.getId()); } shortcutManager.disableShortcuts(disabledShortcutsIds); shortcutManager.setDynamicShortcuts(enabledShortcuts); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } shortcutsSet = true; }
@Test public void setsDisabledShortcutsOnce() { final List<ShortcutInfo> disabledShortcuts = ShortbreadGenerated.createShortcuts(activity).get(1); Shortbread.create(activity); ArgumentCaptor<List> captor = ArgumentCaptor.forClass(List.class); //noinspection unchecked verify(shortcutManager).disableShortcuts(captor.capture()); assertEquals(disabledShortcuts.size(), captor.getValue().size()); Shortbread.create(activity); //noinspection unchecked verify(shortcutManager, times(1)).disableShortcuts(any(List.class)); }
@Override public void onClick(View view) { ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); List<String> list = new ArrayList<>(); list.add("shortcutId3"); try { shortcutManager.disableShortcuts(list); } catch (Exception e) { e.printStackTrace(); } } });