2016-04-01 9 views
0

Ich versuche, den Namen der aktuellen Vordergrundanwendung in Marshmallow zu identifizieren (siehe Bild unten).Wie kann ich den Namen des Vordergrundnamens in Marshmallow bestimmen?

enter image description here

========================================= =

ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE); 

List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
ComponentName componentInfo = taskInfo.get(0).topActivity; 

packagename = componentInfo.getPackageName(); 

==========================================

Aber es scheint, dass veraltet ist. Können Sie bitte einen alternativen Weg vorschlagen?

+0

können Sie atleast den Code hier –

+0

Added den Code schreiben. –

Antwort

0

Sie können am.getAppTasks().get(0).getTaskInfo().topActivity für Ihre aktuelle App verwenden. Wenn Sie Prozessebene Informationen wie Prozessnamen wollen, dann können Sie am.getRunningAppProcesses().get(0).processName

+0

Danke für die Antwort. Aber ich suche nach einer anderen Anwendung, nicht nach der, die zu meiner aktuellen App gehört. –

0

Verwenden Sie diese Methode, um aktuelle Vordergrund app arbeiten meist

private void printForegroundTask() { 

String currentApp = "NULL"; 
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
     UsageStatsManager usm = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE); 
     long time = System.currentTimeMillis(); 
     List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*1000, time); 
     if (appList != null && appList.size() > 0) { 
      SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>(); 
      for (UsageStats usageStats : appList) { 
       mySortedMap.put(usageStats.getLastTimeUsed(), usageStats); 
      } 
      if (mySortedMap != null && !mySortedMap.isEmpty()) { 
       currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); 
      } 
     } 
    } else { 
     ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE); 
     List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses(); 
     currentApp = tasks.get(0).processName; 
    } 
    Log.e(TAG, "Current App in foreground is: " + currentApp); 
} 
Verwandte Themen