it-swarm.com.ru

Как добавить ярлык приложения на домашний экран

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

  1. Нужно разрешение в манифесте.

    <uses-permission Android:name="com.Android.launcher.permission.INSTALL_SHORTCUT" />
    
  2. Создать намерение деятельности, которое должно быть вызвано. Ex (от 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? Я попробовал этот код в активном модуле запуска, он создает ярлык неработающей (другая история) при каждом запуске приложения.

20
Maxim

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

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

Когда-либо.

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

19
LeffelMania

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

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

3
HaMMeReD

Это можно сделать, просто добавив приведенный ниже код к своей основной деятельности в методе 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" />
2
user3264715

Я использовал этот код для создания 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);
0
Abdul Aziz

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

0
Murat Murat