2012-02-26 4 views
10

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

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

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

Так что мой вопрос:

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

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

+1

Оказалось, что приложение, установленное через Android Market, автоматически установит ярлык запуска, если вы включите разрешение INSTALL_SHORTCUT. Но вы не можете сказать, пока не опубликуете свое приложение: даже установка с APK, которую вы загружаете на ваш телефон с помощью других средств, не будет делать трюк. – Wytze

ответ

1

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

+0

Triad, спасибо за этот комментарий. Я попытался запустить sendBroadcast (намерение) из разных мест как в App.java (основное действие), так и в LauncherShortcuts.java. Безрезультатно. – Wytze

+0

У вас также есть '' в вашем 'AndroidManifest.xml'? – triad

+0

Я также заметил, что пример кода не вызывает 'intent.setAction (Intent.ACTION_CREATE_SHORTCUT)', что также необходимо. – triad

0

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

+0

Simon, я попробовал добавить код из ссылки. Это не сработало. Я включил LauncherShortcuts.java и LauncherShortcuts.xml, но ничего не происходит, когда я устанавливаю свое приложение. Возможно, у вас есть более конкретная идея, чем я, когда вы говорите «добавьте код из ссылки»? – Wytze

4
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); 
Смежные вопросы