Comment puis-je démarrer l’écran d’informations sur l’application Android par programmation?

Est-il possible de démarrer l’écran “Infos sur l’application” (c’est-à-dire MenuSettingsApplicationsManage Applications → sélectionner une application) à partir d’une autre application?

Dans 2.2 et ci-dessous, vous ne pouvez accéder à aucune API publique. Mais vous pouvez toujours démarrer l’activité InstalledAppDetails comme le fait ManageApplications . voir ici

  // utility method used to start sub activity private void startApplicationDetailsActivity() { // Create intent to start new activity Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(this, InstalledAppDetails.class); intent.putExtra(APP_PKG_NAME, mCurrentPkgName); // start new activity to display extended information startActivityForResult(intent, INSTALLED_APP_DETAILS); } 

Conclusion : vous pouvez lancer l’écran “info de l’application” comme ceci:

 private static final Ssortingng SCHEME = "package"; private static final Ssortingng APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName"; private static final Ssortingng APP_PKG_NAME_22 = "pkg"; private static final Ssortingng APP_DETAILS_PACKAGE_NAME = "com.android.settings"; private static final Ssortingng APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails"; public static void showInstalledAppDetails(Context context, Ssortingng packageName) { Intent intent = new Intent(); final int apiLevel = Build.VERSION.SDK_INT; if (apiLevel >= 9) { // above 2.3 intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts(SCHEME, packageName, null); intent.setData(uri); } else { // below 2.3 final Ssortingng appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22 : APP_PKG_NAME_21); intent.setAction(Intent.ACTION_VIEW); intent.setClassName(APP_DETAILS_PACKAGE_NAME, APP_DETAILS_CLASS_NAME); intent.putExtra(appPkgName, packageName); } context.startActivity(intent); } 

Depuis l’ API niveau 9 (Android 2.3), vous pouvez lancer une intention avec android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS . Ainsi:

 packageName = "your.package.name.here" try { //Open the specific App Info page: Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); startActivity(intent); } catch ( ActivityNotFoundException e ) { //e.printStackTrace(); //Open the generic Apps page: Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); startActivity(intent); } 

Ancienne question, réponse améliorée:

 /** * 

Intent to show an applications details page in (Settings) com.android.settings

* * @param context The context associated to the application * @param packageName The package name of the application * @return the intent to open the application info screen. */ public static Intent newAppDetailsIntent(Context context, Ssortingng packageName) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setData(Uri.parse("package:" + packageName)); return intent; } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.FROYO) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra("pkg", packageName); return intent; } Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra("com.android.settings.ApplicationPkgName", packageName); return intent; }

J’ai utilisé la solution Paolo pour ouvrir les parameters de l’application dans le SDK 23+ lorsque l’utilisateur a refusé la demande d’autorisation par le passé et choisi l’option “Ne plus demander” dans la boîte de dialog du système de demande d’autorisation.

Mais dans ce cas, j’ai utilisé directement la méthode getPackageName() .

 Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); 

Dans Android 2.3, vous pouvez utiliser startActivity() sur une Intent ACTION_APPLICATION_DETAILS_SETTINGS , avec un Uri correct, pour afficher l’écran “manage” de votre application. Cependant, il s’agit d’une nouveauté d’Android 2.3 – je ne suis pas au courant d’un moyen de le faire dans les versions précédentes d’Android.

 startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_SETTINGS)); 

vous amènera à la liste des parameters / applications. Si vous voulez ouvrir une application spécifique, je pense qu’en 2.2 et ci-dessous, il n’y a aucun moyen, donc vous devez suivre une méthode (pas nécessairement suggérée, car inofficielle):

 final Intent i = new Intent("android.intent.action.VIEW"); i.setComponent(new ComponentName("com.android.settings","com.android.settings.InstalledAppDetails")); i.putExtra(...); // need to figure out the correct extra, probably app package name startActivity(i); 

Mais notez que ceci n’est pas recommandé car ce n’est pas une API / intention officielle (filtre) et pourrait donc changer à l’avenir.