小编典典

如何查看 Android 上是否连接了 Wi-Fi?

all

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

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了状态。


阅读 211

收藏
2022-05-24

共1个答案

小编典典

您应该能够使用 ConnectivityManager 来获取 Wi-Fi
适配器的状态。从那里您可以检查它是否已连接甚至可用

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

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

注意: 应该注意(对于我们这里的 n00bies),您需要添加

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

给你的

AndroidManifest.xml 使其工作。

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

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

NOTE3 :public static final int TYPE_WIFI现在已弃用:

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

2022-05-24