2013-06-01 4 views
18

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

+0

к модам, которые помечены как дубликат: пожалуйста, обратите внимание, что ответы на вашем дубликате не полностью решить вопрос. Следовательно, ОП решил [задать новый вопрос] (http://stackoverflow.com/questions/ask), как это было рекомендовано. Вы увидите, что его собственный ответ содержит очень разную информацию для принятого ответа на дубликат. Pls рассматривает для повторного открытия. –

+0

Это похоже на простой способ получить репутацию, поскольку он почти воспроизводит старую статью, даже не давая кредитов: http: //viralpatel.net/blogs/android-install-uninstall-shortcu t-example/ – igorsantos07

ответ

62

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

Сначала нам нужно добавить разрешение INSTALL_SHORTCUT в android manifest 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.

Cheers !!! Чанак

Также поместите этот код, чтобы избежать многочисленных ярлыков:

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); 
     } 
+0

спасибо за хорошо исследованный ответ на недокументированной функциональности –

+4

Не работал для меня – David

+2

Я думаю, что теперь магазин воспроизведения автоматически делает это для пользователя. (Может быть изменен в настройках), так что на рабочем столе было бы всего 2 значка. –