web-dev-qa-db-fra.com

Comment ajouter un raccourci d'applications à l'écran d'accueil

Je sais que ce n'est pas documenté et que cela ne fonctionnera pas sur tous les appareils, mais de plus en plus d'applications placent leurs raccourcis sur l'écran d'accueil après leur installation. ils ne vont pas ensemble. C'est ce que j'ai pour l'instant.

  1. Besoin d'une permission dans le manifeste.

    <uses-permission Android:name="com.Android.launcher.permission.INSTALL_SHORTCUT" />
    
  2. Créez une intention d'activité qui devrait être appelée. Ex (de Cgeek):

    Intent shortcutIntent = new Intent();
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
  3. Créer un raccourci lui-même

    Intent addIntent = new Intent();
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
    addIntent.setAction("com.Android.launcher.action.INSTALL_SHORTCUT");
    context.sendBroadcast(addIntent);
    

Ma question est la suivante: Où ce code devrait-il aller pour créer un raccourci ajouté après l'installation de .apk? J'ai essayé ce code dans l'activité de lancement, il crée un raccourci cassé (une autre histoire) à chaque démarrage de l'application.

20
Maxim

Autant que je sache, il s'agit d'une fonctionnalité facultative de l'application Market, et non des applications elles-mêmes. De par sa conception, une application ne reçoit aucune émission sur elle-même en cours d'installation. Si cela fonctionne, le plus tôt vous pourrez l'exécuter, c'est la première fois que l'utilisateur lance l'application. Cela dit:

Faire. Ne pas. Automatiquement. Créer. App. Raccourcis.

Déjà.

Ne pas usurper l'interface utilisateur de l'utilisateur.

19
LeffelMania

Je suis d'accord avec la réponse actuellement acceptée, à savoir que vous ne devriez pas le faire en recevant une émission ou au moment de l'installation. Ne rien faire sans interaction ou permission de l'utilisateur.

Cependant, si vous fournissez un bouton dans votre application, vous le placerez dans les boutons Gestionnaire OnClick. Il ajouterait ensuite un raccourci lorsque l'utilisateur sélectionnerait l'option "ajouter un raccourci".

3
HaMMeReD

Cela peut être possible en ajoutant simplement le code ci-dessous à votre activité principale dans la méthode oncreate

        Intent HomeScreenShortCut= new Intent(getApplicationContext(),
                MainActivity.class);

        HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
        HomeScreenShortCut.putExtra("duplicate", false);
        //shortcutIntent is added with addIntent
        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName");
        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);

Ajouter ajouter cette permission à votre manifeste

 <uses-permission Android:name="com.Android.launcher.permission.INSTALL_SHORTCUT" />
2
user3264715

J'ai utilisé ce code pour créer 3 raccourcis sur la page d'accueil:

Intent HomeScreenShortCut= new Intent(getApplicationContext(),
            MainActivity.class);

HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
HomeScreenShortCut.putExtra("duplicate", false);
//shortcutIntent is added with addIntent
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName");
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);
0
Abdul Aziz

Il existe des lacunes dans la même méthode ci-dessus. Prenez le raccourci vers l'écran d'accueil.

0
Murat Murat