45 votes

Android : comment masquer de manière programmée l'icône du lanceur ?

Mon application est conçue pour ne devoir être exécutée qu'une seule fois. En tant que tel, je veux cacher l'icône du lanceur après la première exécution, mais sans désinstaller l'application.

J'ai vu des applications similaires - elles peuvent supprimer leurs propres icônes de la liste des applications du lanceur. Comment puis-je obtenir les mêmes résultats ? Merci.

65voto

Kuffs Points 12318
PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

Notez que l'icône peut ne pas disparaître avant le prochain redémarrage.

13voto

Sahir Saiyed Points 422

Masquez l'icône de l'application en utilisant le code ci-dessous

PackageManager pkg=this.getPackageManager();
pkg.setComponentEnabledSetting(new ComponentName(this,SplashActivity.class),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                        PackageManager.DONT_KILL_APP);

// activité qui s'ouvre pour la première fois dans le fichier manifiest qui est déclaré en tant que <category android:name="android.intent.category.LAUNCHER" />

Voici comment faire revenir l'icône de l'application

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this,SplashActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

9voto

G00fY Points 89

Avec Android Q (API 29) Google a modifié la visibilité de l'icône du lanceur comportement. Même si vous désactivez l'activité du lanceur ou si vous supprimez complètement l'option Android.intent.category.LAUNCHER <intent-filter> de toutes vos activités, l'application apparaîtra dans le lanceur et ouvrira les paramètres de l'application Android OS, à l'exception de :

  • Paquets qui ne déclarent aucune permission dans leurs fichiers manifestes respectifs
  • Applications système
  • Les applications qui ne contiennent aucun composant à l'intérieur de leur balise de leur manifeste respectif

1voto

Clocker Points 190

Vous pouvez avoir une application sans lanceur en N'incluant PAS de filtre d'intention avec MAIN et LAUNCHER dans la déclaration de l'activité dans l'AndroidManifest - la question est alors de savoir comment faire le premier kick off Un widget peut-être ?

1voto

Rohit Nishad Points 854

Cachez l'icône de l'application en utilisant ce code :

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" />
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

et le ramener, avec ça :

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

NOTE : Cela ne fonctionnera pas pour Android 10

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X