In Android 7.1, developer can able to create AppShortCut.
We can create shortcut in two way:
ShortcutManager API.So How to create a shortcut using ShortcutManager dynamically?
The ShortcutManager API lets you store and manage keyboard shortcut contexts ( ShortcutContext ). Each ShortcutManager object: Stores and manages its own set of keyboard shortcut contexts. Listens to the KeyboardEvent events and runs actions for them.
Using ShortcutManager, we can create app dynamic app shortcut in following way:
ShortcutManager shortcutManager;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
shortcutManager = getSystemService(ShortcutManager.class);
ShortcutInfo shortcut;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {
shortcut = new ShortcutInfo.Builder(this, "second_shortcut")
.setShortLabel(getString(R.string.str_shortcut_two))
.setLongLabel(getString(R.string.str_shortcut_two_desc))
.setIcon(Icon.createWithResource(this, R.mipmap.ic_launcher))
.setIntent(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.google.co.in")))
.build();
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
}
}
String resources:
<string name="str_shortcut_two">Shortcut 2</string>
<string name="str_shortcut_two_desc">Shortcut using code</string>
Developer can also perform different tasks app shortcut using ShortcutManager:

Check Github example for App Shortcut
Check https://developer.android.com/preview/shortcuts.html and ShortcutManager to get more info.
createShortcut(CurrentActivity.this, ActivityToOpen.class, "app name", R.mipmap.ic_launcher);
Put this in your Util.
public static void createShortcut(@NonNull Activity activity, Class activityToOpen, String title, @DrawableRes int icon) {
Intent shortcutIntent = new Intent(activity, activityToOpen);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { // code for adding shortcut on pre oreo device
Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
intent.putExtra("duplicate", false);
Parcelable parcelable = Intent.ShortcutIconResource.fromContext(activity, icon);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, parcelable);
activity.sendBroadcast(intent);
System.out.println("added_to_homescreen");
} else {
ShortcutManager shortcutManager = activity.getSystemService(ShortcutManager.class);
assert shortcutManager != null;
if (shortcutManager.isRequestPinShortcutSupported()) {
ShortcutInfo pinShortcutInfo =
new ShortcutInfo.Builder(activity, "browser-shortcut-")
.setIntent(shortcutIntent)
.setIcon(Icon.createWithResource(activity, icon))
.setShortLabel(title)
.build();
shortcutManager.requestPinShortcut(pinShortcutInfo, null);
System.out.println("added_to_homescreen");
} else {
System.out.println("failed_to_add");
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With