Sto lavorando a un'app che richiede le informazioni delle app in esecuzione nel sistema fino ad ora. Esiste un API/metodo per recuperare questo tipo di informazioni?Come ottenere l'elenco delle applicazioni in esecuzione?
15
A
risposta
9
È possibile ottenere informazioni sui processi in esecuzione utilizzando la classe ActivityManager.
11
È Non possibile rilevare un lancio App in Android, ma è possibile ottenere l'elenco delle applicazioni attualmente aperte e verificare se l'applicazione che state cercando è aperto o non utilizzando il seguente codice:
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for")) {
// Do your stuff here.
}
}
si può anche verificare se l'applicazione è in esecuzione in primo piano utilizzando questo metodo
public static boolean isForeground(Context ctx, String myPackage){
ActivityManager manager = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
if(componentInfo.getPackageName().equals(myPackage)) {
return true;
}
return false;
}
2
public static String getActiveApps(Context context) {
PackageManager pm = context.getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
String value = u.dateStamp(); // basic date stamp
value += "---------------------------------\n";
value += "Active Apps\n";
value += "=================================\n";
for (ApplicationInfo packageInfo : packages) {
//system apps! get out
if (!isSTOPPED(packageInfo) && !isSYSTEM(packageInfo)) {
value += getApplicationLabel(context, packageInfo.packageName) + "\n" + packageInfo.packageName + "\n-----------------------\n";
}
}
return value;
//result on my emulator
/* 2 Ekim 2017 Pazartesi 14:35:17
---------------------------------
Active Apps
=================================
SystemSetting
com.xyz.systemsetting
-----------------------
myMail
com.my.mail
-----------------------
X-plore
com.lonelycatgames.Xplore
-----------------------
Renotify
com.liamlang.renotify
-----------------------
Mail Box
com.mailbox.email
----------------------- */
}
isSTOPPED
private static boolean isSTOPPED(ApplicationInfo pkgInfo) {
return ((pkgInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0);
}
IsSystem
private static boolean isSYSTEM(ApplicationInfo pkgInfo) {
return ((pkgInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
}
getApplicationLabel
public static String getApplicationLabel(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
String label = null;
for (int i = 0; i < packages.size(); i++) {
ApplicationInfo temp = packages.get(i);
if (temp.packageName.equals(packageName))
label = packageManager.getApplicationLabel(temp).toString();
}
return label;
}
+0
Poco ridondante, ma ha funzionato in Android N. –
Problemi correlati
- 1. Come ottenere applicazioni in esecuzione in Windows?
- 2. Ottenere l'elenco delle applicazioni in esecuzione in ordine di ultimo utilizzo
- 3. Come verificare le attuali applicazioni in esecuzione in Android?
- 4. Applescript - elenca tutte le applicazioni in esecuzione
- 5. applicazioni scala in esecuzione con java-jar
- 6. Test delle applicazioni VSTO?
- 7. ottenere l'elenco delle applicazioni installate su iphone objective-c
- 8. Profilatura delle applicazioni Linux
- 9. Che cos'è un riavvio progressivo delle applicazioni?
- 10. Applescript ottiene l'elenco delle app in esecuzione?
- 11. Come rimuovere l'applicazione dall'elenco delle applicazioni recenti?
- 12. Come eseguire il debug delle applicazioni wxpython?
- 13. Come nascondere un JFrame nella barra delle applicazioni della barra delle applicazioni
- 14. Nascondi barra delle applicazioni in Windows 8
- 15. Come posso ottenere la versione in esecuzione?
- 16. Come ottenere OpenGL in esecuzione su OSX
- 17. Come ottenere riferimento al servizio in esecuzione?
- 18. Come ottenere Redis in esecuzione su Azure?
- 19. Come ottenere l'ubicazione dell'assembly in esecuzione?
- 20. Come ottenere i nomi delle applicazioni viste sulla schermata iniziale in Android?
- 21. Esecuzione applicazione offre 2 icone delle applicazioni in Android Studio - newbie
- 22. Utilizzo delle informazioni sulle applicazioni con i test delle unità?
- 23. Debug delle applicazioni JSF + PrimeFaces
- 24. Come posso ottenere i dettagli delle eccezioni in XCode 4.6?
- 25. Ritardo di analisi delle applicazioni?
- 26. Applicazione nella barra delle applicazioni
- 27. dati delle applicazioni mobili gestione
- 28. Cambia l'ordine delle applicazioni in OCaml
- 29. Caching delle applicazioni Web in Java
- 30. Test delle applicazioni Webforms ASP.NET
Il primo frammento di codice di cui sopra funziona alla grande per le applicazioni che sono in esecuzione in lo sfondo. Grazie. – mbonness
Non funziona in tutti i casi. Ad esempio, ho aperto Chrome e chiuso utilizzando il pulsante Home. E ho potuto vedere "Chrome" nella lista "cronologia app"/"app in esecuzione". E ho tolto il cromo da lì. Ancora il codice sopra dice che "Chrome" è in esecuzione sullo sfondo. – Manu
@Manu Forse il processo è ancora lì, allora? –