Comment débloquer android phone via ADB
Mon écran est mort et je veux débloquer mon téléphone afin que je puisse y accéder via Kies pour sauvegarder mes photos.
j'ai verrouillé le téléphone via Android Device Manager en définissant un mot de passe facile (j'espérais une option de déverrouillage une fois que je l'ai verrouillé) et j'ai essayé diverses méthodes pour le déverrouiller par exemple:
adb shell input text 1234
comme je ne sais pas à quoi ressemble l'écran de verrouillage, Je ne suis pas sûr des entrées correctes pour le déverrouiller.
je sais que le téléphone est allumé et qu'il répond à la bad. Je suis également capable d'exécuter des applications sur elle à travers Eclipse. C'est un Samsung Galaxy S5 avec Android 5.0.
10 réponses
si vous devez cliquer OK après avoir entré votre mot de passe, cette commande déverrouillera votre téléphone:
adb shell input text XXXX && adb shell input keyevent 66
Où
XXXX
est votre code d'accès.66
keycode de la touche OK.adb shell input text XXXX
entrez votre code d'accès.adb shell input keyevent 66
va simuler le clic OK bouton
cette commande vous aide à déverrouiller le téléphone en utilisant ADB
adb shell input keyevent 82 # unlock
testé dans Nexus 5:
adb shell input keyevent 26 #Pressing the lock button
adb shell input touchscreen swipe 930 880 930 380 #Swipe UP
adb shell input text XXXX #Entering your passcode
adb shell input keyevent 66 #Pressing Enter
a Fonctionné pour moi.
une Autre façon juste pour votre information.
utilisez un câble USB OTG et connectez - vous avec une souris USB, vous pouvez toucher l'écran en cliquant sur votre souris !
si vous avez USB-Debugging/ADB activé sur votre téléphone et que votre PC est autorisé à déboguer sur votre téléphone, alors vous pouvez essayer l'un des outils suivants:
Vysor
Vysor est une application Web chrome qui se connecte à votre appareil via adb et installe une application compagnon pour diffuser le contenu de votre écran sur le PC. Vous pouvez alors contrôler votre appareil à distance avec votre souris.
MonkeyRemote
MonkeyRemote est une télécommande outil de contrôle écrit par moi-même avant que je trouve Vysor. Il se connecte également par adb et vous permet de contrôler votre appareil par la souris, mais contrairement à Vysor, le contenu de l'écran en continu mises à jour très lente (~1 image par seconde). L'avantage est qu'il n'est pas nécessaire pour une application compagnon pour être installé.
les commandes ci-dessous fonctionnent à la fois quand l'écran est activé et désactivé
pour verrouiller l'écran:
adb shell input keyevent 82 && adb shell input keyevent 26 && adb shell input keyevent 26
pour verrouiller l'écran et l'éteindre
adb shell input keyevent 82 && adb shell input keyevent 26
Pour déverrouiller l'écran, sans passer
adb shell input keyevent 82 && adb shell input keyevent 66
Pour déverrouiller l'écran de passe 1234
adb shell input keyevent 82 && adb shell input text 1234 && adb shell input keyevent 66
si l'appareil est verrouillé avec un écran noir exécutez la commande suivante:
- adb shell entrée keyevent 26 - cela va activer l'écran
- adb shell entrée keyevent 82 - cela permettra de déverrouiller et de demander de pin
- adb shell de saisie de texte xxxx && adb shell entrée keyevent 66 - cela va de saisie de votre code pin et appuyez sur entrée, le dispositif de déverrouillage de l'écran d'accueil
si vous avez MyPhoneExplorer installé et connecté (pas sûr que ce soit un must, c'est déjà mon installation), vous pouvez l'utiliser pour contrôler l'écran avec votre souris d'ordinateur. Il se connecte via ADB, pour lequel votre câble USB normal est suffisant.
une autre solution que j'ai trouvé qui a même fonctionné sans redémarrage est la mise à jour des tables dans les paramètres.db et locksettings.DB J'ai dû passer en root pour ouvrir les paramètres.DB bien que:
adb shell
su
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
update secure set value=1 where name='lockscreen.disabled';
.quit
sqlite3 /data/system/locksettings.db
update locksettings set value=0 where name='lock_pattern_autlock';
update locksettings set value=1 where name='lockscreen.disabled';
.quit
Depuis que j'ai comme vous pouvez le voir sur l'image, j'ai obtenu tous les (x,y) pour tous les nombres sur l'écran pour simuler le toucher et déverrouiller mon écran et avoir à sauvegarder mes données, donc si mon mot de passe est 123 j'ai fait toutes les commandes suivantes
adb shell input mouse tap 100 1150
adb shell input mouse tap 500 1150
adb shell input mouse tap 900 1150
j'avais trouvé un cas particulier où glisser (adb shell input touchscreen swipe ... ) pour déverrouiller l'écran d'accueil ne fonctionne pas. Plus exactement pour Acer Z160 et Acer S57. Les téléphones sont l'histoire, mais encore, ils doivent être pris en compte par les développeurs américains. Ici est la source de code qui a résolu mon problème. J'avais fait mon application pour commencer avec l'appareil. et dans la fonction" onCreate " j'avais changé temporairement le type de serrure.
Aussi, juste au cas où google drive fait quelque chose au fichier zip je posterai des fragments de ce code ci-dessous.
AndroidManifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.gresanuemanuelvasi.test_wakeup">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".ServiceStarter" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
android:directBootAware="true" tools:targetApi="n">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
</manifest>
class ServiceStarter: BroadcastReceiver() {
@SuppressLint("CommitPrefEdits")
override fun onReceive(context: Context?, intent: Intent?) {
Log.d("EMY_","Calling onReceive")
context?.let {
Log.i("EMY_", "Received action: ${intent!!.getAction()}, user unlocked: " + UserManagerCompat.isUserUnlocked(context))
val sp =it.getSharedPreferences("EMY_", Context.MODE_PRIVATE)
sp.edit().putString(MainActivity.MY_KEY, "M-am activat asa cum trebuie!")
if (intent!!.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
val i = Intent(it, MainActivity::class.java)
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
it.startActivity(i)
}
}
}
}
class MainActivity : AppCompatActivity() {
companion object {
const val MY_KEY="MY_KEY"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val kgm = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val kgl = kgm.newKeyguardLock(MainActivity::class.java.simpleName)
if (kgm.inKeyguardRestrictedInputMode()) {
kgl.disableKeyguard()
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(arrayOf(Manifest.permission.RECEIVE_BOOT_COMPLETED), 1234)
}
else
{
afisareRezultat()
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
if(1234 == requestCode )
{
afisareRezultat()
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
private fun afisareRezultat() {
Log.d("EMY_","Calling afisareRezultat")
val sp = getSharedPreferences("EMY_", Context.MODE_PRIVATE);
val raspuns = sp.getString(MY_KEY, "Doesn't exists")
Log.d("EMY_", "AM primit: ${raspuns}")
sp.edit().remove(MY_KEY).apply()
}
}