2016-12-03 7 views

Antwort

0

Erste Liste aller Prozesse zu erhalten und dann zu prüfen, für Bildschirmsperre App Paketnamen.

Unten finden Sie die Code:

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
List<ActivityManager.RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE); 

long currentMillis = Calendar.getInstance().getTimeInMillis(); 
Calendar cal = Calendar.getInstance(); 

for (ActivityManager.RunningServiceInfo info : services) { 
    cal.setTimeInMillis(currentMillis-info.activeSince); 
    Log.i("TAG", String.format("Process %s has been running since: %d ms",info.process, info.activeSince)); 
} 

Logcat:

TAG: Process com.android.systemui has been running since: 86526 ms 

Das ist die Bildschirmsperre ist^

TAG: Process com.qualcomm.telephony has been running since: 68521 ms 
TAG: Process com.motorola.ccc has been running since: 57456 ms 
TAG: Process com.google.android.music:main has been running since: 26245 ms 
TAG: Process com.android.phone has been running since: 29421 ms 
TAG: Process com.motorola.ccc has been running since: 52141 ms 
TAG: Process system has been running since: 28602 ms 
TAG: Process com.motorola.actions has been running since: 74371 ms 
TAG: Process com.motorola.ccc has been running since: 59166 ms 
TAG: Process com.motorola.process.slpc has been running since: 25483 ms 
TAG: Process com.android.systemui has been running since: 30142 ms 
TAG: Process com.android.bluetooth has been running since: 22187 ms 
TAG: Process system has been running since: 28603 ms 
TAG: Process com.google.android.gms.persistent has been running since: 31621 ms 
TAG: Process com.android.systemui has been running since: 27361 ms 
TAG: Process com.google.android.gms.persistent has been running since: 99678 ms 
TAG: Process com.motorola.contacts.preloadcontacts has been running since: 45603 ms 
TAG: Process com.google.android.gms.persistent has been running since: 73457 ms 
TAG: Process com.google.android.gms.persistent has been running since: 72908 ms 
TAG: Process com.google.android.gms.persistent has been running since: 37251 
+0

Das ist das Problem, ich kenne nicht den Paketnamen –

+1

@AkashKumar können Sie Paketname aus der Frage, die Sie bereits verwiesen. – Gattsu

+1

@AkashKumar Überprüfen Sie [this] (http://stackoverflow.com/questions/40952185/dynamicly-getting-android-lock-screen-package-name/41076162#comment69397047_40952185) – Gattsu

1

Sie den Paketnamen für jede bestimmen kann, Activity kommt durch die Analyse der Android-Logs in den Vordergrund. Wenn Sie beispielsweise Google Maps geöffnet haben, wird dies durch Klicken auf die Schaltfläche "Home" des Geräts im Protokoll angezeigt (normalerweise nach der Zeichenfolge ActivityManager gefiltert).

START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] 
flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} 

Welche Sie zeigt, dass der Paketname des Startbildschirms Activity ist com.android.launcher

Allerdings, wenn ich mein Nexus 4 Funktionstaste klicken Sie auf den Lockscreen aus jeder App zu zeigen, zeigt es nie wieder eine Aktivität gestartet wird . Das lässt mich denken, dass es nicht das ist, was wir als typische Activity verstehen. Wenn Sie die Quelle für KeyguardViewMediator.java des Android-Quellcodes betrachten, finden Sie eine Methode namens private void doKeyguardLocked(Bundle options). Ich weiß aus Erfahrung, dass das Ändern der Quelle, um sofort von dieser Methode zurückzukehren, den Lockscreen deaktivieren wird. Die Quelle für KeyguardViewMediator.java zeigt, dass es in dem Paket com.android.keyguard ist, und ich glaube, dass dies das Paket ist, das Sie suchen.

Um den Paketnamen dynamisch zu bekommen, scheint es mir nicht möglich. Aber wenn Sie den Paketnamen bereits im Voraus kennen, brauchen Sie ihn nicht dynamisch zu bekommen.

Ich hoffe, das hilft.