Est-il possible de démarrer l'écran "info application" (c'est Menu
→ Settings
→ Applications
→ Manage Applications
→ sélectionnez une application) d'une autre application?Comment démarrer l'écran d'information de l'application android par programme?
Répondre
Dans Android 2.3, vous pouvez utiliser startActivity()
sur un ACTION_APPLICATION_DETAILS_SETTINGS
Intent
, avec un bon Uri
, pour faire apparaître l'écran « gérer » de votre application. Cependant, c'est nouveau pour 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 paramètres/applications. Si vous voulez ouvrir une application spécifique, je pense à 2.2 et au-dessous, il n'y a aucun moyen, vous auriez besoin d'aller un (pas nécessairement suggéré, parce que inofficial) façon:
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 ce n'est pas recommandé car il ne s'agit pas d'une API/intention (filtre) officielle et pourrait donc changer à l'avenir.
Dans 2.2 et ci-dessous, il n'y a pas d'API publiques auxquelles vous pouvez accéder. Mais vous pouvez toujours démarrer l'activité InstalledAppDetails comme le fait le ManageApplications. voir here
// 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 commencer à la "info d'application" écran comme celui-ci je l'ai écrit:
private static final String SCHEME = "package";
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
private static final String APP_PKG_NAME_22 = "pkg";
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
public static void showInstalledAppDetails(Context context, String 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 String 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);
}
merci beaucoup! Cela m'a sauvé beaucoup de temps. le commentaire "supérieur à 2.3" devrait-il être remplacé par "2.3 et plus"? – kristianlm
cela fonctionne parfaitement pour toute application installée. Toutefois, si j'essaie d'ouvrir les paramètres d'une application système, un écran vide apparaît. –
Nous devons également ajouter intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); dans les deux déclarations. c'est-à-dire if() {... ici ...} else {... ici ...} –
De API Niveau 9 (Android 2.3), vous pouvez démarrer 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);
}
question ancienne, une meilleure réponse:
/**
* <p>Intent to show an applications details page in (Settings) com.android.settings</p>
*
* @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, String 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'utilise la solution Paolo pour ouvrir les paramètres Détails Application SDK 23+ lorsque l'utilisateur a refusé la demande d'autorisation dans le passé et choisissez l'option "Ne plus demander" dans la boîte de dialogue 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);
- 1. Démarrer par programme UserControlTestContainer.exe
- 2. Comment démarrer l'application Web pylons par programme?
- 3. Comment démarrer un programme Java?
- 4. comment démarrer par programme 3g connexion sur iphone?
- 5. Comment activer HSDPA par programme sous Android?
- 6. Comment configurer "android: scrollbars = vertical" par programme?
- 7. Comment démarrer le programme de transfert dts?
- 8. Génération de touches par programme dans android
- 9. planificateur de jeu par programme dans Android
- 10. Accès par programme à tous les utilisateurs Menu Démarrer
- 11. Démarrer par programme un serveur HTTP en C#?
- 12. L'émulateur Android refuse de démarrer
- 13. Comment démarrer l'activité sous Android 2.1
- 14. Comment démarrer le programme Windows Mobile?
- 15. Comment démarrer le programme GPS dans blackberry?
- 16. Comment démarrer un programme avec Python?
- 17. Comment démarrer Apache Cassandra par programmation
- 18. comment restreindre la saisie de majuscules dans android par programme?
- 19. comment pouvons-nous ouvrir l'activité de contact android par programme?
- 20. Comment démarrer Application Android réservée aux services
- 21. Android Impossible de démarrer l'activité
- 22. Développement Android: définir un programme par défaut
- 23. Démarrer avec Android
- 24. Android: Comment arrêter complètement le programme?
- 25. Comment démarrer le service android à l'installation
- 26. Comment démarrer avec Android sous Windows XP?
- 27. Comment démarrer une nouvelle application sur Android
- 28. Verrouiller par programme un APK Android
- 29. Télécharger un fichier par programme sur Android
- 30. Définir APN par programme sur Android
Je ne recommanderai pas ce dernier. Que faire si une application malveillante utilise le package: com.android.settings? –
@PaoloRovelli J'ai écrit "pas nécessairement recommandé", mais pour une raison différente. Je ne pense pas que vous puissiez éviter le danger que vous mentionnez; Si deux applications utilisent la même intention (chaîne), l'utilisateur aura toujours une boîte de dialogue pour choisir l'application à utiliser (ce qui réduit un peu le risque). Mais aussi, notez que le paramètre dans la première approche est aussi rien d'autre qu'une chaîne: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_SETTINGS - donc ce n'est pas une protection contre une application malveillante non plus s'il utilise le nom du package com.android.settings. –