解决:android 开发 WIFI 功能 密码输入正确时监听的问题

您所在的位置:网站首页 ipad连接wifi密码错误怎么修改 解决:android 开发 WIFI 功能 密码输入正确时监听的问题

解决:android 开发 WIFI 功能 密码输入正确时监听的问题

2024-07-05 17:52| 来源: 网络整理| 查看: 265

问题描述: 在一个 android 项目中 需要 开发 类似于 系统 wifi 连接的功能,选择可用 wifi 后,输入正确的密码后,WifiManager.SUPPLICANT_STATE_CHANGED_ACTION 中的 WifiManager.ERROR_AUTHENTICATING 密码错误广播 偶尔也会收到监听,文章最后已有解决方案 在这里插入图片描述

先看看 wifi 功能开发的常规流程 1、注意 wifi状态的监听 private void regiterWifiBroadcast() { wifiReceiver = new WifiBroadcastReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);//监听wifi是开关变化的状态 filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);//监听wifi连接状态广播,是否连接了一个有效路由 filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);//监听wifi列表变化(开启一个热点或者关闭一个热点) filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); //监听密码 registerReceiver(wifiReceiver, filter); } 2、创建 wifi 监听的广播 //获取WifiManager WifiManager wifiManager = (WifiManager)Context.getSystemService(Context.WIFI_SERVICE); public class WifiBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())){ int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0); switch (state){ /** * WIFI_STATE_DISABLED WLAN已经关闭 * WIFI_STATE_DISABLING WLAN正在关闭 * WIFI_STATE_ENABLED WLAN已经打开 * WIFI_STATE_ENABLING WLAN正在打开 * WIFI_STATE_UNKNOWN 未知 */ case WifiManager.WIFI_STATE_DISABLED:{ Log.e(TAG,"wifi已经关闭"); break; } case WifiManager.WIFI_STATE_DISABLING:{ Log.e(TAG,"wifi正在关闭"); break; } case WifiManager.WIFI_STATE_ENABLED:{ Log.e(TAG,"wifi已经打开"); connectType = -1; wifiManager.startScan(); break; } case WifiManager.WIFI_STATE_ENABLING:{ Log.e(TAG,"wifi正在打开"); break; } case WifiManager.WIFI_STATE_UNKNOWN:{ Log.e(TAG,"wifi未知状态"); break; } } }else if(WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())){ NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); Log.e(TAG, "--网络状态--" + info.toString()); if(NetworkInfo.State.DISCONNECTED == info.getState()){//wifi没连接上 Log.e(TAG,"wifi没连接上,已断开"); if(connectType!=0) { connectType = 0; for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3