6 votes

Déverrouiller l'écran avec ADB Android 4.2

Auparavant avec Android 4.1, en faisant quelque chose comme :

adb shell input keyevent 82  
#(KEYCODE_MENU)

déverrouillerait l'écran au premier démarrage et permettrait ensuite d'autres commandes pour lancer des applications et les faire afficher à l'écran, etc.

Avec la 4.2, dans les 10s qui suivent le démarrage, l'écran de verrouillage devient noir. L'émission de la même commande ADB ne fonctionne plus et l'écran reste vide.

Si j'appuie manuellement sur la touche menu, l'écran s'allume à nouveau et je peux alors émettre un événement de touche pour déverrouiller l'écran.

Une idée sur la façon dont je peux faire remonter l'écran à partir de l'ADB et déverrouiller l'écran à partir de là ?

Gracias

4voto

Milner Points 533

Si vous êtes sous la version 4.2.2, vous pouvez lire, par exemple, ce qui suit Liste blanche ADB à partir d'Android 4.2.2 : À partir de cette version d'Android, les " appareils distants " (c'est-à-dire ceux sur lesquels vous exécutez des commandes ADB ). de ) doit être autorisé par l'appareil Android (c'est-à-dire celui dans lequel ces commandes sont exécutées). sur ) - afin que votre appareil Android puisse distinguer les "appelants de confiance" des "attaquants malveillants". Vous trouverez également des détails à ce sujet sur cet article sur AndroidPolice :

Le fonctionnement est assez simple : lorsque vous connectez votre PC à votre appareil Android par USB, Android obtient la clé RSA de votre PC (un jeton d'identification). Dans Android 4.2.2, lorsque le débogage USB est activé, une invite s'affiche lors de la connexion, comme illustré ci-dessous.

Authorization Prompt
(source de l'image : AndroidPolice )

Mise à jour des commentaires ci-dessous :

De plus, comme Shurane a souligné, le comportement de adb keyevent semble avoir changé avec Android 4.2.2 : alors qu'avant adb keyevent 26 était un "écran" dédié, et adb shell input keyevent 82 un interrupteur dédié à l'allumage de l'écran, maintenant adb keyevent 26 est un basculer qui éteint l'écran (lorsqu'il est allumé) et l'allume (lorsqu'il est éteint), comme indiqué par Pepelac .

1voto

Jack Lawson Points 1467

L'astuce est que dans 4.4.x et/ou d'autres systèmes vous devez envoyer un Enter après la commande, sinon vous devez attendre x sec/min.

Alors fais-le comme ça :

adb shell

@shell: input keyevent 26

@shell: 

@shell: exit

Cela fonctionnera dans tous les cas, je pense.

0voto

Kane Points 1

Configurez l'appareil en mode "pas de verrouillage" dans les paramètres de sécurité (paramètres de verrouillage dans certaines versions d'Android) afin qu'après le redémarrage, le système d'exploitation passe directement à l'écran d'accueil.

Vous pouvez alors envoyer n'importe quel événement de touche, au mieux un événement non reconnu pour qu'il ne soit pas traité par le gestionnaire par défaut, pour réveiller l'écran.

EDIT : Cela fonctionne bien sur 4.1. J'ai vérifié sur la 4.4 et les événements autres que le 26 ne fonctionnent pas lorsque l'écran est éteint. Je suppose que c'est parce qu'il y a un autre périphérique distinct maintenant défini pour le bouton d'alimentation et les autres peuvent être inactifs. Vous devez donc vérifier si l'écran est éteint (dumpsys power, chercher mScreenOn) et si c'est le cas, envoyer 26. Vous devez faire cette vérification pour éviter de l'éteindre alors qu'il est allumé. Ceci fonctionnera sur toutes les versions d'Android.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X