首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何查看Android上的Wi-Fi是否已连接?

如何查看Android上的Wi-Fi是否已连接?
EN

Stack Overflow用户
提问于 2010-10-01 16:51:11
回答 24查看 242.5K关注 0票数 245

我甚至不希望我的用户尝试下载任何东西,除非他们连接了Wi-Fi。然而,我似乎只能判断Wi-Fi是否启用,但他们可能仍然有3G连接。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
    return false;
}

然而,状态并不是我所期望的。即使连接了Wi-Fi,我的状态仍然是OBTAINING_IPADDR

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2010-10-01 17:00:35

您应该能够使用ConnectivityManager来获取Wi-Fi适配器的状态。从那里你可以使用check if it is connected or even available

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mWifi.isConnected()) {
    // Do whatever
}

备注:需要注意的是(这里是我们n00bies )您需要添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

致您的

AndroidManifest.xml才能正常工作。

NOTE2public NetworkInfo getNetworkInfo (int networkType)现在已弃用:

此方法在API级别23中已弃用。此方法不支持同一类型的多个连接网络。请改用getAllNetworks()和getNetworkInfo(android.net.Network)。

NOTE3public static final int TYPE_WIFI现在已弃用:

此常量在API级别28中已弃用。应用程序应该改为使用NetworkCapabilities.hasTransport(int)或requestNetwork(NetworkRequest,NetworkCallback)来请求适当的网络。用于支持的传输。

票数 477
EN

Stack Overflow用户

发布于 2016-01-20 15:42:37

由于方法NetworkInfo.isConnected()现在是 API-23中的已弃用的,下面是一个检测Wi-Fi适配器是否打开并使用WifiManager连接到接入点的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private boolean checkWifiOnAndConnected() {
    WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON

        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();

        if( wifiInfo.getNetworkId() == -1 ){
            return false; // Not connected to an access point
        }
        return true; // Connected to an access point
    }
    else {
        return false; // Wi-Fi adapter is OFF
    }
}
票数 87
EN

Stack Overflow用户

发布于 2010-10-01 17:04:46

我只是简单地使用以下几点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SupplicantState supState; 
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
supState = wifiInfo.getSupplicantState();

它将在您调用getSupplicantState()时返回这些状态之一;

关联-关联已完成。

关联-正在尝试与接入点关联。

已完成-已完成所有身份验证。

已断开连接-此状态表示客户端未关联,但可能会开始查找接入点。

DORMANT -Android添加的状态,在客户端发出显式断开命令时报告。

WPA4- FOUR_WAY_HANDSHAKE密钥握手正在进行中。

GROUP_HANDSHAKE -正在进行WPA组密钥握手。

INACTIVE -非活动状态。

无效-一种通常永远看不到的伪状态。

扫描-扫描网络。

UNINITIALIZED无连接。

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

https://stackoverflow.com/questions/3841317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文