Как обнаружить ярлык на главном экране
У меня есть приложение, которое позволяет создавать "ярлыки" на главном экране. Но могу ли я определить, существуют ли уже "ярлыки", мне не пришлось создавать их снова. Благодарю.
3 ответа
У меня была такая же проблема. Я не думаю, что вы можете сказать, есть ли он там, но я думаю, что то, что я использовал, будет работать и для вас.
Просто удалите ярлык, прежде чем добавить его!
intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(intent);
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(intent);
Просто убедитесь, что вы добавили следующее в ваш файл манифеста.
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
Я не знаю, возможно ли обнаружить ярлык или нет, но вместо удаления и последующей установки вы можете использовать поле Extra как
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);
...
intent.putExtra("duplicate", false);
...
sendBroadcast(intent);
Я думаю, что нашел хороший способ убедиться, что ярлык не добавляется более одного раза, а также сообщение Toast, которое нужно удалить. Сделайте int или логическое значение (я использовал int) и поместите в onResume следующее:
if(shortcut != 1) //or shortcut == true
{
...(shortcut code)...
shortcut = 1;
savePref("shortcut", shortcut); //overriding method to save int's or booleans
}
Если пользователь удаляет данные пользователя, он добавляет еще один ярлык на домашний экран, но я могу с этим смириться, так как большинство пользователей так или иначе не удаляют такие вещи, если они не удаляют приложение. Надеюсь это поможет!