dom*_*eau 5 android wifimanager android-wifi android-6.0-marshmallow
我正在使用 API 级别 27,但在 6.0 平板电脑上运行我的应用程序。这是可疑的代码:
WifiManager wm = (WifiManager)pContext.getSystemService(Context.WIFI_SERVICE);
WifiInfo wi = wm.getConnectionInfo();
SupplicantState ss = wi.getSupplicantState();
NetworkInfo.DetailedState ds = wi.getDetailedStateOf( ss );
String ssid = wi.getSSID();
int ip = wi.getIpAddress();
Run Code Online (Sandbox Code Playgroud)
我的平板电脑已连接(我在 WiFi 面板中看到“已连接”)到在笔记本电脑上创建的临时网络。没有互联网接入。
ss 是 COMPLETED
ds 是 OBTAINING_IPADDR
ip是-745953088(192.168.137.211)
为什么DetailedState设置为OBTAINING_IPADDR而不是CONNECTED?
查看类android.net.wifi.WifiInfo
static {
stateMap.put(SupplicantState.DISCONNECTED, DetailedState.DISCONNECTED);
stateMap.put(SupplicantState.INTERFACE_DISABLED, DetailedState.DISCONNECTED);
stateMap.put(SupplicantState.INACTIVE, DetailedState.IDLE);
stateMap.put(SupplicantState.SCANNING, DetailedState.SCANNING);
stateMap.put(SupplicantState.AUTHENTICATING, DetailedState.CONNECTING);
stateMap.put(SupplicantState.ASSOCIATING, DetailedState.CONNECTING);
stateMap.put(SupplicantState.ASSOCIATED, DetailedState.CONNECTING);
stateMap.put(SupplicantState.FOUR_WAY_HANDSHAKE, DetailedState.AUTHENTICATING);
stateMap.put(SupplicantState.GROUP_HANDSHAKE, DetailedState.AUTHENTICATING);
stateMap.put(SupplicantState.COMPLETED, DetailedState.OBTAINING_IPADDR);
stateMap.put(SupplicantState.DORMANT, DetailedState.DISCONNECTED);
stateMap.put(SupplicantState.UNINITIALIZED, DetailedState.IDLE);
stateMap.put(SupplicantState.INVALID, DetailedState.FAILED);
}
Run Code Online (Sandbox Code Playgroud)
您可以看到DetailedState.CONNECTED未与任何SupplicantState 值映射。不知道为什么..
使用SupplicantState而不是DetailedState来检查状态是否已连接。
| 归档时间: |
|
| 查看次数: |
418 次 |
| 最近记录: |