Я хочу создать ярлык/ярлык приложения на рабочем столе, как только я установлю свое приложение (даже до его начала). Это возможно? Как я могу это сделать?
Как добавить ярлык приложения на рабочий стол при установке приложения?
Ответ 1
ПРИМЕЧАНИЕ. Этот ответ теперь неверен. См., Например, ответ Робин, чтобы сделать это.
Насколько я знаю, приложение не может заставить себя на главный экран. Он добавляется в список приложений, который поддерживает приложение launcher, но главный экран обычно находится под контролем пользователя. Предоставление приложениям возможности загромождать домашний экран будет открытым приглашением на злоупотребление.
Ответ 2
С ICS вы можете сделать следующее:
public void createShortCut(){
Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
shortcutintent.putExtra("duplicate", false);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname));
Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.icon);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext(), EnterActivity.class));
sendBroadcast(shortcutintent);
}
Пожалуйста, обратитесь к исходному коду запуска: эта ссылка
Изменить: если кто-то пропустит комментарий, добавив следующую строку.
Для этого требуется разрешение "com.android.launcher.permission.INSTALL_SHORTCUT"
Ответ 3
Вы забыли добавить разрешения:
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission
android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
Отличный учебник здесь: http://androidforbegineers.blogspot.in/2014/01/android-home-screen-shortcut.html#!
Ответ 4
Если вы устанавливаете приложение, ни ваше приложение, ни какие-либо службы или другие процессы не активны! Android хочет, чтобы пользователь сделал первый шаг в "открытии" приложения. Вы не можете напрямую установить ярлык! Это ответ. Примечание. На большинстве устройств пусковая установка создаст ярлык для самого приложения.
Можете ли вы установить ярлыки во время выполнения после того, как пользователь каким-то образом запустил приложение хотя бы один раз?: да (см. ответ Робинса).
Есть ли обходной путь? Может быть, но ничего хорошего.
Обновить. Еще один совет: если у вас уже есть приложение на устройстве пользователя. (Например, если ваше второе приложение, которое устанавливается, является ключом для "идущего профессионала" или чего-то еще), вы фактически можете запустить второе приложение из первого, без того, чтобы пользователь запускал второе приложение (и добавлял ярлык).
Ответ 5
-
Создать функцию для вызова намерения ярлыка:
private void criarAtalho() { Intent shortcutIntent = new Intent(getApplicationContext(), SplashScreen.class); shortcutIntent.setAction(Intent.ACTION_MAIN); Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "nomeDaApp"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.mipmap.ic_launcher)); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); addIntent.putExtra("duplicate", false); //may it already there so don't duplicate getApplicationContext().sendBroadcast(addIntent); }
-
записать в OnCreat вызов функции:
if(!getSharedPreferences("APP_PREFERENCE", Activity.MODE_PRIVATE).getBoolean("IS_ICON_CREATED", false)){ criarAtalho(); getSharedPreferences("APP_PREFERENCE", Activity.MODE_PRIVATE).edit().putBoolean("IS_ICON_CREATED", true).commit(); }
-
установите разрешения для манифеста:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
Ответ 6
Сначала добавьте разрешение для добавления ярлыка в манифест:
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
Затем вызовите функцию ниже.
public void createShortcut(){
Intent intentShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
Parcelable appicon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher);
intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, appicon);
intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext(), MainActivity.class));
intentShortcut.putExtra("duplicate", false);
sendBroadcast(intentShortcut);
}