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