I think I've tried all the solutions I found on the internet, but no one worked - no force close, but nothing appears on desktop.
Now, I have this:
private void createShortcutOnDesktop(Application app) {
Intent shortcutIntent = new Intent();
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, app.getIntentShortcut());
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, app.getName());
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.home_button));
shortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
this.sendBroadcast(shortcutIntent);
finish();
}
The app.getIntentShortcut()
:
public Intent getIntentShortcut() {
Intent i = new Intent();
i.setClassName(packageName, name);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
return i;
}
And in the AndroidManifest.xml
file:
<permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
What am I missing? Thanks.
Solved. Just change at manifest:
this:
<permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
to this:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
Just an 'uses' ¬¬