2012-02-17 2 views
7

Есть ли способ определить, существует ли конкретный ярлык на главном экране ?Как определить, существует ли ярлык на главном экране?

Мое приложение устанавливает ярлык на главном экране устройства время запуска при определенных условиях, и я не хочу, чтобы отображались ярлыки . Я также не хочу, чтобы появлялись сообщения с тостами: «Ярлык создан» или «Ярлык уже существует» каждый раз, когда загружается устройство . Я нашел недокументированный Intent Extra под названием EXTRA_SHORTCUT_DUPLICATE, который предотвратит установку повторяющихся ярлыков с , но Launcher по-прежнему отображает «Ярлык уже существует» сообщение «Toast». Я бы предпочел не полагаться на этот недокументированный Intent Extra, если для этого есть поддерживаемая техника.

+1

+1 по этому вопросу, я спросил об этом: http://stackoverflow.com/questions/9452121/install-launcher-icon-in-home-screen-once. Мне бы очень хотелось установить ярлык, когда приложение установлено пользователем, или когда пользователь активно выбирает из всплывающего окна, предоставляемого приложением. – Wytze

ответ

0

не такое навязчивое? Почему бы просто не добавить его один раз, и позволить пользователю решить, хотят ли они сохранить его или нет?

+1

Согласен, добавление ярлыка только один раз более чем достаточно. Я думаю, что у Asfman есть такая же идея, и, как и я, я могу найти код, где значок установлен в событии onCreate (т. Е. Каждый раз, когда приложение запущено). – Wytze

+0

OP хочет уметь определить, есть ли он там! «Просто добавив его один раз» все равно даст вам «Ярлык уже существует» тост, если пользователь поставил его там сам ** до **, он запускает приложение. Самая разумная вещь, которую нужно сделать здесь, - это сначала проверить, есть ли ярлык, а если нет, то вы можете автоматически добавить его (или спросить пользователя, хочет ли он добавить его). И нет, это не навязчиво. –

+0

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

0

Когда ваше приложение создает ярлык, установите «true» для логического и сохраните его в хранилище (например, небольшой файл или sharedpreferences). И проверьте его значение, когда приложение пытается создать ярлык.

+0

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

-1
**// Checking if ShortCut was already added 
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean("PREF_KEY_SHORTCUT_ADDED", false); 
     if (shortCutWasAlreadyAdded) return; 
     Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class); 
     shortcutIntent.setAction(Intent.ACTION_MAIN); 
     Intent addIntent = new Intent(); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SBM"); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher)); 
     addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
     sendBroadcast(addIntent); 
     // Remembering that ShortCut was already added 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean("PREF_KEY_SHORTCUT_ADDED", true); 
     editor.commit();** 
Смежные вопросы