通过adb打开Android设备的WiFi

27

我的手机已被锁定(尝试图案次数过多)。要解锁,我需要在我的Gmail帐户上输入用户名和密码。这是唯一的解锁方式。我无法启动任何活动,甚至无法打开WiFi连接。没有互联网连接,我无法登录以恢复我的手机。

也许有任何adb命令可以打开wifi连接,这样我就可以使用我的手机吗?

14个回答

52

这非常有效且非常简单。

adb -s $PHONESERIAL shell "svc wifi enable"

这是一条ADB命令,用于在手机上启用Wi-Fi连接。

4
使用命令adb devices可以显示设备的序列号。 - saiy2k
3
并非所有设备都适用,少数三星设备在更改WiFi状态时显示设备转储状态。 - Hayi Nukman
1
可以确认在我的三台设备上都无法运行,它们都是三星的。其中之一是三星Tab 3。 - fedmich
看起来现在要么手机必须被root,要么SELinux需要“Permissive”(通常不是默认设置),才能使这个命令生效。否则它只会返回“Killed”。来源:https://forum.xda-developers.com/showthread.php?t=2438174 - Ben

12

可以通过修改settings.db来启用WiFi:

adb shell
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
update secure set value=1 where name='wifi_on';

更改后可能需要重新启动设备才能实际打开WiFi。

这个解决方案来自于一篇博客文章,它指出适用于Android 4.0。我不知道早期版本是否相同。


4
没错,你说得对。但只有你的设备被 ROOT 过后才能访问数据文件夹。所以我的设备没有被 ROOT 过。我已经 ROOT 过了,这样做清除了所有数据,包括此锁。 - pleerock
啊,我遇到了与问题完全相同的情况,尽管我的设备已经取得了 root 权限。如果你被卡在 Google 账户解锁屏幕上,这是除了恢复出厂设置之外唯一的解决方案。 - D__
1
兄弟...你刚刚让我避免了恢复出厂设置...非常感谢!:D - tftd
1
你应该使用 adb shell scv wifi enabled 来代替直接操作数据库。 - rharter
1
这个可以用,但是你知道有没有更好的方法来应用修改而不需要重新启动设备吗? - BQuadra

7
请尝试以下步骤,这对我很有效。
方法一:
1. 打开设备。 2. 插入USB电缆。 3. 你将会看到打开USB存储的屏幕。 4. 下拉通知抽屉。 5. 打开wifi/Data。
已在AT&T Fusion上测试通过。
方法二:
使用shkschneider提供的方法。
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
adb shell input keyevent 20 & adb shell input keyevent 23

只有在您开启USB调试时才能使用此方法。如果您未在“开发者选项”下开启USB调试,请按照以下步骤操作:

  1. 关闭设备。
  2. 进入恢复模式(电源按钮+音量上键)
  3. 将设备连接到电脑。
  4. 使用ADB工具执行与shkschneider相同的命令。

在AT&T Fusion上测试通过。


我该如何点击开关?你建议的输入是点击第一个网络,我在哪里可以看到按键事件选项? - Jesus Dimrix
你的 '&' 应该改为 '&&';即 adb shell input keyevent 20 && adb shell input keyevent 23。 - Max Waterman

7
您可以打开WiFi: - 连接电脑上的USB; - 会显示警告对话框“连接UMS模式或KIES” - 不要点击,不要取消 - 拉下通知栏并打开WiFi。

1
这位朋友!你应该得到一枚奖章!非常好的解决方案(对于我的情况来说确实如此)。需要让更多人知道这个答案,比重置手机要好得多,而且在WiFi关闭和手机被锁定的情况下完美适用!太棒了! - Chris
这个技巧适用于所有三星安卓设备吗?我有S2! - LOG_TAG

3
请看以下答案:

如何通过 ADB 关闭 WiFi?

使用 ADB shell 连接 WiFi

然而,我非常确定 Google 实际上会存储你的电子邮件和密码(在保存到设备时),以备不时之需。因此,在需要解锁时,它不需要互联网连接。

我可能是错的。无论如何,当我遇到这个问题时,我有互联网连接,并且我知道我的用户名和密码,但它仍然说我的信息是错误的(尽管我正在登录我的电子邮件)。当时必须格式化手机!

祝好运。


我已经看过这些答案了,它们对我没有帮助。而且登录需要互联网连接,因为谷歌不会存储您的电子邮件和密码。这是糟糕的政策。 - pleerock
我想说的是,如果您在尝试过多次数后解锁手机,实际上并不会登录到Google服务。如果需要这样做,那么您的特定用例将使该功能无用。而且这个用例非常明显。密码不会被存储,只会存储哈希值。 - Tim
很不幸,我填写了我的登录数据,但什么也没有发生。而且我无法打开我的 Wi-Fi 连接。 - pleerock
查看ADB命令。如果无法启用WiFi,可能会有用? - Tim
很遗憾,我有Nexus S,它是纯Android 4,没有这个选项。 - pleerock
显示剩余3条评论

3

您应该从adb启动WiFi活动,然后模拟输入:

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
adb shell input keyevent 20 && adb shell input keyevent 23

这里是adb输入列表:#7789826 我不确定这些按键事件是否适合你的情况,但我认为它可以。它模拟了一个“向下”以选择第一个复选框,然后是一个“回车”。

我已经尝试了。也许它不起作用是因为“太多的图案尝试”锁屏?或者可能是因为我安装有Android 4。 - pleerock
如果这是谷歌关于您的Android手机隐私的政策,那么您需要互联网或恢复出厂设置。抱歉。 - shkschneider
你的 '&' 应该改为 '&&'。 - Max Waterman
确实,Max,谢谢。已编辑。 - shkschneider

2
在我的ROM中,它存储在“全局”数据库而不是“安全”数据库中。因此D__的答案是正确的,但SQL行需要连接到不同的数据库:
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
update global set value=1 where name='wifi_on';

这个可以工作... 但是你知道有没有更好的方法来应用修改而不需要重新启动设备吗? - BQuadra

1
很简单,只需按住电源按钮,直到出现“手机选项”屏幕并打开移动数据。之后,您可以登录您的帐户或远程解锁您的设备。

1
某些/旧版本的Android在关机菜单中没有“移动数据”选项。 - pleerock

0

不确定这个相对简单的解决方案是否已经在这里发布过。

问题是手机被锁定,没有WiFi连接,未root和USB调试禁用(该死,最糟糕的情况)。由于USB调试已禁用,“Adb devices”无法检测到设备。尝试了恢复模式(无法进入),尝试了紧急模式(Adb仍然无法检测到设备)。 当我几乎放弃并且距离硬重置只有一英寸时,发生了一些奇怪的事情。当我像往常一样将手机连接到USB时,USB输入屏幕出现了。没什么新鲜的。然后我注意到,在这个屏幕上,实际上可以拉下一个下拉栏,然后就成功地打开了WiFi。 然后只需输入Google帐户,手机就解锁了。

希望我能帮助到某些人。


0

我曾在三星Mini II手机上遇到同样的情况。最终,我通过长按电源按钮直到出现“关机”菜单来解决了问题。从该菜单中,可以启用网络数据连接。

然后使用 @googlemail.com (而不是 @gmail.com)登录我的Google账户似乎起了作用。尽管地址的更改可能只是让手机有时间启动3G连接,而没有产生任何实质性的影响。


我无法在原生安卓4版本中启用它。 - pleerock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接