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

Как включить автоматическое создание ярлыков после загрузки и установки приложений с Android Market?

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

4b9b3361

Ответ 1

Отправьте намерение Launcher. Передайте намерение INSTALL_SHORTCUT с EXTRA_SHORTCUT_NAME и EXTRA_SHORTCUT_INTENT. Дополнительный EXTRA_SHORTCUT_DUPLICATE можно использовать для управления дубликатными ярлыками. подробности можно найти в Launcher2 project в репозиторий AOSP.

Пожалуйста, будьте осторожны с этим, некоторые пользователи могут не оценивать создание ярлыка без разрешения.

Вот несколько псевдокодов:

Intent installIntent = new Intent(InstallShortcutReceiver.ACTION_CREATE_SHORTCUT);
Intent myAppIntent = new Intent(Context.getPackageContext(), MyActivity.class);
installIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, Context.getString(R.string.app_name));
installIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, myAppIntent);
installIntent.putExtra(Intent.SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
Context.sendBroadcast(installIntent);

В Intent есть дополнительная информация, а также альтернативный намерение action.

Ответ 2

Оказывается, Android Market автоматически устанавливает ярлык на рабочем столе при загрузке приложения. Я замечаю это поведение по умолчанию на планшете Android 3.1 с целевым приложением Honeycomb (3.0+). Похоже, что это не стандартное соглашение для приложений, работающих на предыдущих версиях Android, где явный пользовательский ввод/разрешение требуется при первой загрузке/запуске приложения.

Ответ 3

Я тестировал эту демонстрацию. И добавьте addShortcut() в onCreate(). Затем развертывание из IntelliJ, мой GEL (Google Experience Launcher) создает ярлык для первого запуска. Я боюсь, что он будет продолжать создавать ярлыки, но, похоже, не создаст другого ярлыка, если приложение будет запущено в следующий раз. Попробуйте сами, если вам нужно.

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, getString(R.string.app_name));
    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);
}

Ответ 4

добавление ярлыков

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, "ApplicationName");
    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);
}

для удаления ярлыка

private void removeShortcut() {

    //Deleting 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, "ApplicationName");

    addIntent
            .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);
}

разрешений

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