android请求连接wifi之后验证密码是否正确的方法

在做wifi连接开发的时候遇到一个问题,就是请求连接一个指定SSID的wifi之后,不知道wifi密码是否正确的.

刚开始不知道怎么判断,于是开一个定时任务不断查询是否连接上指定SSID,到一定时长还未连上(例如10s),则提示密码错误.

后来在网上找到更好的方法了,其实就是直接接收广播就行了.


下面是一些广播接收代码,记得注册相应广播


if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) {
    LogLazy.e("wifi密码错误广播");
    int linkWifiResult = intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, 123);
    if (linkWifiResult == WifiManager.ERROR_AUTHENTICATING) {
        toast("密码错误");
    }
}



参考连接

http://www.eoeandroid.com/thread-318526-1-1.html


主要内容:


  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Android 中,可以使用 `WifiManager` 类来连接 WiFi。为了判断输入密码是否正确,可以尝试连接 WiFi,并通过监听 `SupplicantState` 的变化来获取连接状态。当连接成功时,可以认为输入密码正确的,否则密码错误。 以下是一个例子: ```java public class WifiUtils { private Context mContext; private WifiManager mWifiManager; private WifiReceiver mWifiReceiver; public WifiUtils(Context context) { mContext = context; mWifiManager = (WifiManager) mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE); } public void connectWifi(String ssid, String password) { if (!mWifiManager.isWifiEnabled()) { mWifiManager.setWifiEnabled(true); } WifiConfiguration wifiConfiguration = createWifiConfiguration(ssid, password); int networkId = mWifiManager.addNetwork(wifiConfiguration); mWifiManager.disconnect(); mWifiManager.enableNetwork(networkId, true); mWifiManager.reconnect(); registerWifiReceiver(); } private WifiConfiguration createWifiConfiguration(String ssid, String password) { WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "\"" + ssid + "\""; wifiConfiguration.preSharedKey = "\"" + password + "\""; wifiConfiguration.status = WifiConfiguration.Status.ENABLED; wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); return wifiConfiguration; } private void registerWifiReceiver() { if (mWifiReceiver == null) { mWifiReceiver = new WifiReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); mContext.registerReceiver(mWifiReceiver, intentFilter); } } private void unregisterWifiReceiver() { if (mWifiReceiver != null) { mContext.unregisterReceiver(mWifiReceiver); mWifiReceiver = null; } } private class WifiReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(intent.getAction())) { SupplicantState supplicantState = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE); if (supplicantState == SupplicantState.COMPLETED) { unregisterWifiReceiver(); // 输入密码正确 } else if (supplicantState == SupplicantState.DISCONNECTED) { unregisterWifiReceiver(); // 输入密码错误 } } } } } ``` 在上面的例子中,我们创建了一个 `WifiUtils` 类来连接 WiFi。`connectWifi` 方法接受两个参数:WiFi 的名称和密码。我们使用 `createWifiConfiguration` 方法来创建一个 `WifiConfiguration` 对象,并将其添加到系统的 WiFi 列表中。然后,我们断开当前连接并启用新连接。最后,我们注册了一个 `WifiReceiver` 来监听连接状态的变化,并在连接成功或失败时取消注册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值