Мое приложение создает ярлык на главном экране, когда нажата конкретная кнопка. Но когда я нажимаю ту же кнопку в следующий раз, когда она создает еще один ярлык, не удаляя предыдущий ярлык. Есть ли какие-либо проблемы в моем кодеЯрлык для Android не удаляется
private void ShortcutIcon(){
final String PREF_KEY_SHORTCUT_ADDED="Poo";
// Checking if ShortCut was already added
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean(PREF_KEY_SHORTCUT_ADDED, false);
Toast.makeText(getApplicationContext(), "creating shortcut on desktop",
Toast.LENGTH_LONG).show();
// if (shortCutWasAlreadyAdded) return;
Intent shortcutIntent = new Intent(getApplicationContext(), Shortcut.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, "SOS");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.sos));
if (shortCutWasAlreadyAdded)
{
Intent shortcut = new Intent();
shortcutIntent.setAction(Intent.ACTION_VIEW);
shortcutIntent.setClassName(MainActivity.this, "com.example.urltesting.Shortcut");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent removeIntent = new Intent();
removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcut);
removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SOS");
removeIntent.putExtra("duplicate", false);
removeIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
Toast.makeText(getApplicationContext(), "trying to remove shortcut",
Toast.LENGTH_LONG).show();
getApplicationContext().sendBroadcast(removeIntent);
}
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();
}
}
Я добавил разрешения и я не использую любые 3-launcher.I партии установили другие приложения, которые могут удалить значок, но мой код не в состоянии сделать это –
Я отредактировал свой ответ с потенциальным исправлением проблемы, с которой вы сталкиваетесь. Вам нужно будет отредактировать имя класса, о котором я упоминал, с вашим именем класса. Напишите обратно, если это не устранит проблему. – Gagan