我怎样才能在android中以编程方式读取wifi密码

我试图从非root用户设备上以编程方式获取WiFi密码。

我只需要能够读取密码,我不需要能够编辑它们。

我可以在清单文件中获得许可吗?

这是不可能的,因为这将是一个主要的安全风险。

如果电话根植但我不知道,你可以想象,并且希望,即使你可以到达手机存储的地方,它也会被加密。

大多数情况下,Wi-Fi凭证由wpa_supplicant守护程序管理,该守护程序将其存储在/data/misc/wifi/wpa_supplicant.conf类的配置文件中。

在此文件中,您将find存储记住的网络的network结构,如下所示:

 network={ ssid="example" key_mgmt=WPA-PSK psk="passphrase" } 

此文件通常由系统用户(如wifiroot 。 所以如果你想直接阅读它,你必须是root

不过,您可以使用wpa_cli命令获取remember网络的ssid或其他网络variables:

 $ wpa_cli get_network  ssid "example" 

但是如果您尝试使用psk您将获得*因为这是一个安全风险:

 $ wpa_cli get_network  psk * 

如果您的应用程序是特权应用程序(例如 – 安装在/system/priv-app ,例如使用SuperUser),那么您可以在Lollipop和更新版本中使用新的WifiManager#getPrivilegedConfiguredNetworks() API。

请参阅: https : //android.googlesource.com/platform/frameworks/base/+/758bdf4a915c313f1c3bef0b95b494c91f363f03%5E%21/#F1

对于未使用系统密钥签名的APK,读取/写入WiFi密码没有API支持。 所以你将无法检索它。