GetRunningAppProcesses devuelve la lista vacía en Android M (5.1.1)

Acabo de probar mi aplicación y CM, ATM Android Assistant, etc Todos ellos no pueden obtener la lista de proceso en ejecución, pero funciona bien en la versión pre OS. Entonces, ¿qué está pasando con Android M (5.1.1)? ¡por favor ayuda!

am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> list = am.getRunningAppProcesses(); Log.i(TAG, "LQ::examine list.size()=" + list.size()); 

Decido usar getRunningServices en su lugar!

Du Speed ​​Booster y Power Clean usan getRunningServices en su lugar, quizás getRunningAppProcesses esté obsoleto en el futuro.

Gracias google, gracias alfabeto.

  Hashtable<String, List<ActivityManager.RunningServiceInfo>> hashtable = new Hashtable<String, List<ActivityManager.RunningServiceInfo>>(); ActivityManager am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo rsi : am.getRunningServices(Integer.MAX_VALUE)) { if (isCanceled()) { return; } String pkgName = rsi.service.getPackageName(); if (hashtable.get(pkgName) == null) { List<ActivityManager.RunningServiceInfo> list = new ArrayList<ActivityManager.RunningServiceInfo>(); list.add(rsi); hashtable.put(pkgName, list); } else { hashtable.get(pkgName).add(rsi); } } int i = 0; int size = hashtable.size(); for (Iterator it = hashtable.keySet().iterator(); it.hasNext(); i++) { String key = (String) it.next(); List<ActivityManager.RunningServiceInfo> value = hashtable.get(key); ProcessItem item = new ProcessItem(getContext(), value.get(0).pid, key, totalCpu, totalRam); if (!whiteList.contains(item.pkgName)) { if (!killList.contains(item.pkgName)) { killList.add(item.pkgName); ramTotal += item.ram; if (getListener() != null) { Progress progress = new Progress(this); progress.setArg1(i); progress.setArg2(size); progress.setMsg(item.appName); progress.setObj(item); getListener().onExamining(progress); } } } } hashtable.clear(); hashtable = null; 

Otra opción es utilizar UsageStatsManager .

 UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(Context.USAGE_STATS_SERVICE); long endTime = System.currentTimeMillis(); long beginTime = endTime - 1000*60; // We get usage stats for the last minute List<UsageStats > stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, beginTime, endTime); // Sort the stats by the last time used if(stats != null) { SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>(); for (UsageStats usageStats : stats) { mySortedMap.put(usageStats.getLastTimeUsed(),usageStats); } if(mySortedMap != null && !mySortedMap.isEmpty()) { topActivity = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); } } 

Para que esto funcione, necesita el permiso de PACKAGE_USAGE_STATS . Puede solicitar al usuario que haga esto abriendo la pantalla en la configuración:

 Intent usageAccessIntent = new Intent( Settings.ACTION_USAGE_ACCESS_SETTINGS ); usageAccessIntent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); startActivity( usageAccessIntent ); 

Podría obtener la lista de aplicaciones en primer plano utilizando el método getRunningServices( ) en android 6.0. Gracias @ thecr0w

 ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List appProcessInfoList = mActivityManager.getRunningServices(Integer.MAX_VALUE); 
  • ¿Cómo puede una aplicación de Android tener más de un proceso?
  • Android runtime.getruntime (). Exec () obtener id de proceso
  • ¿Cómo puedo abrir un Fragmento de Android en un nuevo proceso?
  • La vinculación al servicio que ya fue iniciada por BroadcastReceiver crea una nueva instancia de servicio
  • Runtime.exec () error: se bloquea sin proporcionar un objeto de proceso
  • Ejecución de un comando de shell para copiar archivos de la aplicación Android
  • ¿Cómo matar un proceso?
  • ¿Por qué debo comenzar el servicio de urbanairship como un proceso separado?
  • Lista de todos los procesos en ejecución en Android
  • ¿Cómo puedo ver qué wakelocks están activos?
  • Activación del flash de la cámara durante la grabación de vídeo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.