I improved a little bit a solution that was found in StackOverflow. Now program saves in preferences whether a shortcut was already added and doesn’t add it in new launches of an app if user deleted it. This also saves a little bit time, since the code to add an existing shortcut doesn’t run anymore.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
final static public String PREFS_NAME = "PREFS_NAME"; final static private String PREF_KEY_SHORTCUT_ADDED = "PREF_KEY_SHORTCUT_ADDED"; // Creates shortcut on Android widget screen private void createShortcutIcon(){ // Checking if ShortCut was already added SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean(PREF_KEY_SHORTCUT_ADDED, false); if (shortCutWasAlreadyAdded) return; Intent shortcutIntent = new Intent(getApplicationContext(), IntroActivity.class); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "YourAppName"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher)); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); // Remembering that ShortCut was already added SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(PREF_KEY_SHORTCUT_ADDED, true); editor.commit(); } |
In Android Manifest:
1 |
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> |