Try to use
public void removeShortcut(Context context) {
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutTest");
try {
Intent shortcutIntent = Intent.parseUri(shortcutUri, 0);
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
} catch (URISyntaxException e) {
}
intent.setAction("com.android.launcher.permission.UNINSTALL_SHORTCUT");
context.sendBroadcast(intent);
}
Note: You do not have to save shortcutUri
to remove the shortcut. Instead you can use
Intent shortcutIntent = new Intent();
shortcutIntent.setClassName("com.telespree.android.client",
"com.telespree.android.client.ShortcutTest");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent();
try {
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
Intent.parseUri(shortcutIntent.toUri(0), 0));
} catch (URISyntaxException e) {
e.printStackTrace();
}
...
intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
context.sendBroadcast(intent);
If you want to use intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
instead of
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
Intent.parseUri(shortcutIntent.toUri(0), 0));
then you need to set action for shortcutIntent
each time , i.e. while installing as well as while uninstalling e.g. Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);