如何通过亚行解锁Android手机

时间:2015-03-16 08:34:42

标签: android adb

我的屏幕已经死了,我想解锁手机,以便通过Kies访问它来备份我的照片。

我通过Android设备管理器锁定了手机,设置了一个简单的密码(一旦锁定它就希望解锁选项)并尝试了各种解锁方法,例如:

adb shell input text 1234

由于我不知道锁屏的样子,我不确定解锁它的正确输入。

我知道手机已打开,并且它响应adb。我也可以通过Eclipse在其上运行应用程序。 这是一款搭载Android 5.0的三星Galaxy S5。

14 个答案:

答案 0 :(得分:33)

此命令可帮助您使用ADB解锁手机

adb shell input keyevent 82 # unlock

答案 1 :(得分:32)

如果您在输入密码后必须单击“确定”,此命令将解锁您的手机:

adb shell input text XXXX && adb shell input keyevent 66

其中

  • XXXX是您的密码。
  • 66是按钮的键码确定
  • adb shell input text XXXX将输入您的密码。
  • adb shell input keyevent 66将模拟点击确定按钮

答案 2 :(得分:24)

在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

为我工作。

答案 3 :(得分:15)

如果您的手机启用了USB调试/ ADB,并且您的PC已获得手机调试授权,那么您可以尝试以下其中一种工具:

Vysor

Vysor是一款Chrome网络应用,可通过adb连接到您的设备,并安装配套应用以将您的屏幕内容流式传输到PC。然后,您可以使用鼠标远程控制设备。

MonkeyRemote

在我找到Vysor之前,MonkeyRemote是我自己编写的远程控制工具。它还通过adb连接并允许您通过鼠标控制您的设备,但与Vysor相比,流式屏幕内容更新速度非常慢(每秒约1帧)。好处是不需要安装配套应用程序。

答案 4 :(得分:13)

另一种仅供您参考的方式。

使用USB OTG线缆连接USB鼠标,点击鼠标即可触摸屏幕!

答案 5 :(得分:12)

以下命令在屏幕打开和关闭时均可使用

锁定屏幕:

adb shell input keyevent 82 && adb shell input keyevent 26 && adb shell input keyevent 26

锁定屏幕并将其关闭

adb shell input keyevent 82 && adb shell input keyevent 26

解锁屏幕而不通过

adb shell input keyevent 82 && adb shell input keyevent 66

解锁已通过1234的屏幕

adb shell input keyevent 82 && adb shell input text 1234 && adb shell input keyevent 66

答案 6 :(得分:8)

如果设备被黑屏锁定,请执行以下操作:

  1. adb shell输入keyevent 26 - 这将打开屏幕
  2. adb shell输入keyevent 82 - 这将解锁并询问引脚
  3. adb shell输入文字xxxx&& adb shell输入keyevent 66 - 这将输入您的图钉并按Enter键,将设备解锁到主屏幕

答案 7 :(得分:3)

如果您安装并连接了MyPhoneExplorer(不确定这是必须的,恰好是我的设置),您可以使用它来控制计算机鼠标的屏幕。它通过ADB连接,您的普通USB电缆就足够了。

我发现另一个解决方案,即使没有重启也可以更新settings.db和locksettings.db中的表 我不得不切换到root来打开settings.db但是:

 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

Source that made me edit my tables

答案 8 :(得分:1)

我想分享我的方式,首先我让华为提升了p7而我的触摸屏停止了处理触摸,所以上述解决方案都没有帮助我解锁手机,我找到了一个更好的聪明方法因为我可以看到屏幕,因此我认为我的显示器是1080 x 1920像素,因此我必须使用键盘(x,y)在我的photoshop上模拟绘图,所以我可以尝试使用input mouse tap命令。

screenshot of simulation

由于我已经在图片中看到了针锁,我已经获得了屏幕上所有数字的所有(x,y)来模拟触摸并解锁我的屏幕并且必须备份我的数据,因此如果我的话密码是123我做了以下所有命令

adb shell input mouse tap 100 1150
adb shell input mouse tap 500 1150
adb shell input mouse tap 900 1150

然后我的手机刚刚解锁,我希望它有用。

答案 9 :(得分:1)

如果您想在不触摸手机的情况下打开手机,

步骤

  1. 确保已在PC和android中完成了 adb设置
  2. 打开 cmd (命令提示符)
  3. 键入adb devices来贴一下手机是否准备就绪
  4. 如果显示类似
List of devices attached
059c97f4        device

然后输入以下命令

adb shell input keyevent 26 && adb shell input swipe 600 600 0 0 && adb shell input text <pass> && adb shell input keyevent 66

<pass>中输入密码并完成。希望您的电话已打开

答案 10 :(得分:0)

我发现了一种特殊情况,即无法滑动(ADB Shell输入触摸屏滑动...)来解锁主屏幕。更适合Acer Z160和Acer S57。这些电话已经成为历史,但我们的开发人员仍需考虑这些电话。 Here是解决我的问题的代码源。我已经使我的应用程序从设备开始。在“ onCreate”功能中,我临时更改了锁定类型。

此外,以防万一谷歌驱动器对zip文件起作用,我将在下面发布该代码的片段。

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()
    }
}

答案 11 :(得分:0)

@Yogeesh Seralathan略微修改了答案。他的答案非常完美,只需立即运行这些命令即可。

adb shell input keyevent 26 && adb shell input touchscreen swipe 930 880 930 380 && adb shell input text XXXX && adb shell input keyevent 66

答案 12 :(得分:0)

基于@Bhaskar 的回答和其他答案,这里有一个完整的解锁命令(在 Pixel 3 上测试):

adb shell input keyevent 26 && adb shell input keyevent 82 && adb shell input text <password> && adb shell input keyevent 66

答案 13 :(得分:0)

滑动解锁(适用于 Pixel 3a):

adb shell input keyevent 26 && adb shell input touchscreen swipe 2 4400 500 2