Как добавить ярлык приложения на главный экран
Я знаю, что это не задокументировано и не будет работать на каждом устройстве, но я вижу, что все больше приложений размещают свои ярлыки на главном экране после их установки.
Нашел кучу фрагментов кода, как это сделать, но для меня они не подходят друг к другу.
Это то, что я получил сейчас.
-
Требуется разрешение в манифесте.
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
-
Создайте намерение действия, которое нужно вызвать. Пример (из 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);
-
Создать ярлык
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? Я пробовал этот код в активности запуска, он создает прерывистую (другую историю) ярлык при каждом запуске приложения.
Ответы
Ответ 1
Насколько я знаю, это необязательная функция приложения Market, а не самих приложений. По дизайну приложение не получает трансляцию о том, что она устанавливается. Если эти коды работают, то как только вы сможете выполнить это, это первый раз, когда пользователь запускает приложение. Тем не менее:
У. Не. Автоматически. Создайте. Приложение. Ярлыки.
Ever.
Не узурпируйте пользовательский интерфейс пользователя.
Ответ 2
Я согласен с принятым в настоящее время ответом, что вы не должны этого делать, получая трансляцию или время установки. Не делайте ничего без участия пользователя или разрешения.
Однако, если вы укажете кнопку в своем приложении, вы поместите ее в обработчик OnClick. Затем он будет добавлять ярлык, когда пользователь выбирает опцию "добавить ярлык".
Ответ 3
Это возможно, просто добавьте приведенный ниже код к вашему основному виду деятельности в методе 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" />
Ответ 4
Я использовал этот код для создания 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);
Ответ 5
Есть недостатки в том же методе выше. Возьмите ярлык на главный экран.