首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果设备上已连接wifi SSID,则检查WIFI凭据

如果设备上已连接wifi SSID,则检查WIFI凭据
EN

Stack Overflow用户
提问于 2018-04-30 15:08:18
回答 1查看 324关注 0票数 0

情况: 1)我的android设备已经成功连接到我的SSID,所以密码已经存储,并且连接良好。2)在我的应用程序中,我可以选择让用户输入此网络的wifi凭据(此处确定SSID没有问题,但不能确定没有root的密码,因此用户手动输入)

问题:用户输入wifi密码后-我需要检查密码是否正确-唯一检查的方法是连接到此wifi网络-如何正确执行此操作?

尝试:当我从wifi ssid断开连接时,我为wifi添加了凭据用户输入的配置-即使它是错误的密码- wifi重新连接成功,因为我猜之前从我的应用程序外部的配置输入的凭据是正确的。所以不管用户输入什么密码,我都不知道用户输入的凭证是否正确。

任何帮助-欢迎!谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-04-30 21:56:53

最后,经过几个小时的研究,人们终于能够确定下一步:

前提条件: 1)设备使用标准设备选项和正确的密码连接到wifi网络;2)我正在尝试检查用户输入的此wifi网络的凭据。

结果:警告!(只有确切的动作流对我有效):

1)断开wifi:

代码语言:javascript
复制
wifiManager.disconnect();

2)创建配置:

代码语言:javascript
复制
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + wifiSsid + "\"";
if(authType == 0){
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
} else if(authType == 1) {
    conf.preSharedKey = "\""+ wifiPassword+"\"";
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
} else {
    conf.preSharedKey = "\""+ wifiPassword+"\"";
}
conf.status = WifiConfiguration.Status.ENABLED;

3)禁用并移除所有配置(如果您的应用程序中未创建配置,则不会移除它们):

代码语言:javascript
复制
 List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
 for (WifiConfiguration i : list) {
     wifiManager.disableNetwork(i.networkId);
     wifiManager.removeNetwork(i.networkId);
 }

4)添加已创建的配置:

代码语言:javascript
复制
final int networkId = wifiManager.addNetwork(conf);

5)仅使用以下命令激活config:

代码语言:javascript
复制
wifiManager.enableNetwork(networkId, true);

结果是,如果配置中的wifi密码是正确的,你可以在大约2-4秒内连接到wifi,但是如果配置中的wifi密码是错误的-你可以连接(如果这个网络之前通过设置连接)更长的时间,大约8- 12秒。

这里是您在2-4秒内未连接,您可以写wifi凭证检查失败或连接到网络失败。

我要求从谷歌开发人员功能到wifi管理器来检查凭证能力,但目前对我来说,这是唯一能做的。

伙计们,欢迎任何其他解决方案!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50095524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档