Android 5.1.1 und oben getRunningAppProcesses() gibt meine Anwendung Paket nur

Scheint es Google endlich geschlossen alle Türen für Sie immer die aktuelle Vordergrund-Anwendung Paket.

Nach dem Lollipop update, die getötet getRunningTasks(int maxNum) und Dank diese Antwort, ich habe diesen code, um die Vordergrund-Anwendung-Paket seit Lollipop:

final int PROCESS_STATE_TOP = 2;
RunningAppProcessInfo currentInfo = null;
Field field = null;
try {
    field = RunningAppProcessInfo.class.getDeclaredField("processState");
} catch (Exception ignored) { 
}
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appList = am.getRunningAppProcesses();
for (RunningAppProcessInfo app : appList) {
    if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND &&
        app.importanceReasonCode == 0 ) {
        Integer state = null;
        try {
            state = field.getInt( app );
        } catch (Exception ignored) {
        }
        if (state != null && state == PROCESS_STATE_TOP) {
            currentInfo = app;
            break;
        }
    }
}
return currentInfo;

Android 5.1.1 und höher (6.0 Marshmallow), es scheint, getötet getRunningAppProcesses() als gut. Es gibt jetzt eine Liste Ihrer eigenen Anwendung Paket.


UsageStatsManager

Können wir die neue UsageStatsManager API als hier beschrieben aber es funktioniert nicht für alle Anwendungen. Einige system-Anwendungen wird die Rücksendung des Pakets

com.google.android.googlequicksearchbox

AccessibilityService (Dezember 2017: Werde gebannt für die Verwendung von Google)

Einige Anwendungen verwenden AccessibilityService (wie sehen Sie hier), aber es hat einige Nachteile.


Gibt es eine andere Möglichkeit, die laufende Anwendung Paket?

Du Speed Booster scheint zu arbeiten. Ich 'm nicht sicher wenn es verwendet UsageStatsManager.
Beachten Sie, dass einige große Anbieter haben entfernt die system-Aktivität, die Zugriff gewährt, die UsageStats API aus Ihren Geräten. Dies bedeutet, dass die apps auf diesen Geräten kann niemals der Erwerb der erforderlichen Erlaubnis.
Samsung einer von Ihnen. Das sind über 60% des Marktes.
Hier ist eine Karte aus dem android bug tracker zu diesem Thema: code.google.com/p/android-developer-preview/issues/...
Wenn ich parse die Ausgabe läuft ps in eine Schale und die Politik ist "fg" und den Inhalt /proc/[pid]/oom_adj_score gleich 0 dann die app wird die Vordergrund-Anwendung. Leider scheint es /proc/[pid]/oom_adj_score ist nicht mehr lesbar auf Android 6.0. gist.github.com/jaredrummler/7d1498485e584c8a120e

InformationsquelleAutor Lior Iluz | 2015-06-03

Schreibe einen Kommentar