Подтвердить что ты не робот

Как добавить ярлык приложения на рабочий стол при установке приложения?

Я хочу создать ярлык/ярлык приложения на рабочем столе, как только я установлю свое приложение (даже до его начала). Это возможно? Как я могу это сделать?

4b9b3361

Ответ 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"

Ответ 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);
}