2016-12-03 2 views
5

J'ai besoin d'obtenir le nom du package de l'activité de l'écran de verrouillage android. J'ai googlé trouvé rien sauf https://stackoverflow.com/a/16881064/2803557 qui ne semble pas fonctionner.Obtenir dynamiquement le nom du package de l'écran de verrouillage Android

Est-il possible d'obtenir le nom du package de verrouillage de l'écran

+0

Le nom du package de l'écran de verrouillage est: com.android.systemui Si vous souhaitez afficher quelque chose sur l'écran de verrouillage, il existe d'autres méthodes plus efficaces. – abhishesh

Répondre

0

liste Obtenir de tous les processus et vérifier le nom du package de l'application de verrouillage de l'écran.

est sous le 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 

C'est l'écran de verrouillage^

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

C'est le problème que je ne connais pas le nom du paquet –

+1

@AkashKumar vous pouvez obtenir le nom du paquet à partir de la question que vous avez déjà mentionnée. – Gattsu

+1

@AkashKumar Check [this] (http://stackoverflow.com/questions/40952185/dynamically-getting-android-lock-screen-package-name/41076162#comment69397047_40952185) – Gattsu

1

Vous pouvez déterminer le nom du package pour tout Activity qui vient au premier plan en analysant les journaux Android. Par exemple, si vous avez ouvert Google Maps, cliquez sur le bouton Accueil de l'appareil pour l'afficher dans le journal (je filtre généralement par la chaîne ActivityManager).

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

Ce qui montre que le nom du package de l'écran d'accueil Activity est com.android.launcher

Cependant, lorsque je clique sur mon Nexus 4 bouton d'accueil pour afficher l'écran de verrouillage de toute application, il ne montre jamais une autre activité en cours de lancement . Cela me fait penser que ce n'est pas ce que nous entendons par Activity.

Si vous regardez la source pour KeyguardViewMediator.java le code source Android, vous trouverez une méthode nommée private void doKeyguardLocked(Bundle options). Je sais par expérience que changer la source pour retourner immédiatement à partir de cette méthode désactivera le lockscreen. La source pour KeyguardViewMediator.java montre que c'est dans le paquet com.android.keyguard, et je crois que c'est le paquet que vous recherchez. En ce qui concerne l'obtention dynamique du nom du paquet, cela ne me semble pas possible. Mais, si vous connaissez déjà le nom du paquet à l'avance, il n'est pas nécessaire de l'obtenir de manière dynamique.

J'espère que cela aide.