Устанавливать значок запуска на главном экране один раз

Когда пользователь устанавливает приложение для Android, в меню приложений создается значок запуска. Многие пользователи, с которыми я говорю, ожидают, что при установке приложения значок должен появиться автоматически на главном экране ( "стартовая панель" ).

Многие приложения достигают этого как-то. Мое предпочтение заключалось бы в том, чтобы при установке появилось окно с запросом пользователя "Вы хотите добавить ярлык?" Если это невозможно, любой код, который автоматически добавляет ярлык, будет делать.

Android дает кучу кода здесь: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html Подразумевается, что добавление этого кода (и связанного с ним xml) в ваш проект сделает трюк. Но это не так, как я хочу. Кажется, что представленный код является пассивным, и мне нужно каким-то образом вызвать его.

Итак, мой вопрос:

Как я могу инициировать установку ярлыка и как я могу убедиться, что это происходит только один раз, предпочтительно вызванный каким-то событием "установка приложения"?

PS: Усложняющим фактором является то, что я создаю свое приложение с помощью PhoneGap, что означает, что основным видом деятельности является не "Активность", а "DroidGap".

Ответ 1

В этом примере он возвращает intent в setResult(...). Я считаю, вам нужно запустить sendBroadcast(intent), чтобы запустить установку ярлыка.

Ответ 2

    Intent shortcutIntent = new Intent(getApplicationContext(), HomeScreen.class);      
    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AIMS ICD");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.aims));
    addIntent.putExtra("duplicate", false);
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);

Ответ 3

Класс DroidGap расширяет активность, поэтому вы можете просто добавить код из указанной вами ссылки, чтобы добавить ярлык.