Как добавить ярлык на главный экран в android программно [дубликат]

этот вопрос уже есть ответ здесь:

эта проблема возникла, когда я разрабатывал приложение для android. Я подумал о том, чтобы поделиться знаниями, которые я собрал во время своего развития.

1 ответов


Android предоставить нам класс намерения com.android.launcher.action.INSTALL_SHORTCUT который можно использовать для добавления ярлыков на главный экран. В следующем фрагменте кода мы создаем ярлык активности MainActivity с именем HelloWorldShortcut.

Сначала нам нужно добавить разрешение INSTALL_SHORTCUT для Android манифеста xml.

<uses-permission
        android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

на addShortcut() метод создает новый ярлык на домашний экран.

private void addShortcut() {
    //Adding shortcut for MainActivity 
    //on Home screen
    Intent shortcutIntent = new Intent(getApplicationContext(),
            MainActivity.class);

    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent
            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                    R.drawable.ic_launcher));

    addIntent
            .setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    addIntent.putExtra("duplicate", false);  //may it's already there so don't duplicate
    getApplicationContext().sendBroadcast(addIntent);
}

обратите внимание, как мы создаем shortcutIntent объект, который держит нашу целевую активность. Это намерение объект добавляется в другое намерение как EXTRA_SHORTCUT_INTENT.

наконец мы транслируем новое намерение. Это добавляет ярлык с именем, указанным как EXTRA_SHORTCUT_NAME и значок определяются EXTRA_SHORTCUT_ICON_RESOURCE.

этот код, чтобы избежать нескольких сочетаний :

  if(!getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).getBoolean(Utils.IS_ICON_CREATED, false)){
          addShortcut();
          getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).edit().putBoolean(Utils.IS_ICON_CREATED, true);
      }