web-dev-qa-db-fra.com

Comment ajouter un raccourci à l'écran d'accueil dans Android par programme

Ce problème est survenu lorsque je développais une application Android. J'ai pensé à partager les connaissances que j'ai recueillies au cours de mon développement.

24
Chanaka udaya

Android nous fournit une classe d'intention com.Android.launcher.action.INSTALL_SHORTCUT Qui peut être utilisée pour ajouter des raccourcis à l'écran d'accueil. Dans l'extrait de code suivant, nous créons un raccourci d'activité MainActivity avec le nom HelloWorldShortcut.

Nous devons d'abord ajouter l'autorisation INSTALL_SHORTCUT À Android manifest xml.

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

La méthode addShortcut() crée un nouveau raccourci sur l'écran d'accueil.

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

Notez comment nous créons un objet shortcutIntent qui contient notre activité cible. Cet objet d'intention est ajouté à une autre intention en tant que EXTRA_SHORTCUT_INTENT.

Enfin, nous avons diffusé la nouvelle intention. Cela ajoute un raccourci avec le nom mentionné comme EXTRA_SHORTCUT_NAME Et l'icône définie par EXTRA_SHORTCUT_ICON_RESOURCE.

Mettez également ce code pour éviter plusieurs raccourcis:

  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);
      }
68
Chanaka udaya