【问题标题】:Checking if wifi is connected returning false even though it is connected检查wifi是否已连接即使已连接也返回false
【发布时间】:2024-01-15 22:47:02
【问题描述】:

我正在开发一个 android 项目,我正在尝试检查 android 设备是否已连接到 Wifi,但是,即使我的设备已成功连接到 Wifi,我的函数总是返回 false。

在类的构造函数中,我传递调用方法的上下文,并在构造函数中创建ConnnectivityManager的实例

下面是构造函数

public NetworkManagement(Context context)
{
    this.context = context;
    connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
}

以下是我遇到问题的函数

public boolean isConnectedToWifi()
{
    NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (networkInfo.isConnected())
    {
        return true;
    }
    else
    {
        return false;
    }
}

即使我的设备连接到wifi网络并且我可以成功连接到互联网,上面的函数总是会返回false,但我不明白为什么。

感谢您提供的任何帮助。

【问题讨论】:

    标签: android android-wifi


    【解决方案1】:
    public class NetworkManagement
    {
        public Context context;
    
        public NetworkManagement(Context context)
        {
            this.context = context;     
        }
    
        public boolean isConnectedToWifi()
        {
            ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            if (networkInfo.isConnected())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    
    }
    

    并调用

    //tested with context=getApplicationContext();
    NetworkManagement a = new NetworkManagement(context);
    Boolean z = a.isConnectedToWifi();
    

    z 应该正确返回它

    编辑:它仍然无法正常工作,然后我接受它。如果仍然不是,那将是上下文中的错误

    【讨论】:

    • 这与我在问题中发布的代码几乎相同
    • 谢谢,我正在使用 getApplicationContext() 方法。如果有任何不同,则从服务中检索应用程序上下文并传递给同步适配器,然后在同步适配器的 performSync 方法中使用该同步适配器