Как обнаружить ярлык на главном экране

У меня есть приложение, которое позволяет создавать "ярлыки" на главном экране. Но могу ли я определить, существуют ли уже "ярлыки", мне не пришлось создавать их снова. Благодарю.

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
}

Если пользователь удаляет данные пользователя, он добавляет еще один ярлык на домашний экран, но я могу с этим смириться, так как большинство пользователей так или иначе не удаляют такие вещи, если они не удаляют приложение. Надеюсь это поможет!

Другие вопросы по тегам