Как добавить ярлык приложения на домашний экран - PullRequest
20 голосов
/ 09 августа 2011

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

  1. Требуется разрешение в манифесте.

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    
  2. Создайте намерение действия, которое должно бытьназывается.Пример (из cgeek):

    Intent shortcutIntent = new Intent();
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
  3. Создайте сам ярлык

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    context.sendBroadcast(addIntent);
    

Мои вопросы: Где этот код должен идти, чтобы сделатьярлык добавлен после установки .apk?Я пробовал этот код в активном модуле запуска, при каждом запуске приложения он создает ярлык (другая история).

Ответы [ 5 ]

19 голосов
/ 09 августа 2011

Насколько я знаю, это дополнительная функция приложения Market, а не самих приложений.По замыслу приложение не получает трансляцию о том, что оно само устанавливается.Если эти коды работают, вы можете выполнить их как можно быстрее, когда пользователь впервые запустит приложение.Тем не менее:

До.Не.Автоматически.Создайте.Приложение.Ярлыки.

Ever.

Не узурпируйте дизайн пользовательского интерфейса.

3 голосов
/ 04 декабря 2011

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

Однако, если вы предоставите кнопку в своем приложении, вы поместите ее в обработчик кнопок OnClick.Затем он добавил бы ярлык, когда пользователь выбирает опцию «добавить ярлык».

2 голосов
/ 03 февраля 2014

Это может быть возможно, просто добавьте приведенный ниже код к своей основной деятельности в методе oncreate

        Intent HomeScreenShortCut= new Intent(getApplicationContext(),
                MainActivity.class);

        HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
        HomeScreenShortCut.putExtra("duplicate", false);
        //shortcutIntent is added with addIntent
        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName");
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                        R.drawable.ic_launcher));

        addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 

        getApplicationContext().sendBroadcast(addIntent);

Добавить добавить это разрешение в манифест

 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
0 голосов
/ 09 сентября 2016

Есть недостатки в том же методе выше. Перенесите ярлык на главный экран.

0 голосов
/ 18 декабря 2014

Я использовал этот код для создания 3 ярлыков на домашней странице:

Intent HomeScreenShortCut= new Intent(getApplicationContext(),
            MainActivity.class);

HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
HomeScreenShortCut.putExtra("duplicate", false);
//shortcutIntent is added with addIntent
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName");
addIntent.putExtra(
    Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
    Intent.ShortcutIconResource.fromContext(
        getApplicationContext(),
        R.drawable.ic_launcher
    )
);

addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 

getApplicationContext().sendBroadcast(addIntent);
...