Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓如何找出我';我在无线网络上?_Android_Wifi - Fatal编程技术网

Android 安卓如何找出我';我在无线网络上?

Android 安卓如何找出我';我在无线网络上?,android,wifi,Android,Wifi,在我的应用程序中,我只需要知道设备是否连接到wifi网络。我认为这个函数可以在模拟器上运行,但不能在实际设备上运行 public static boolean wifiInternet(Context c) { try { ConnectivityManager connectivityManager = (ConnectivityManager)c.getSystemService(Context.CONNECTIVITY_SERVICE); N

在我的应用程序中,我只需要知道设备是否连接到wifi网络。我认为这个函数可以在模拟器上运行,但不能在实际设备上运行

public static boolean wifiInternet(Context c)
{
    try
    {
        ConnectivityManager connectivityManager = (ConnectivityManager)c.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = connectivityManager.getActiveNetworkInfo();  // CRASHES HERE
        String name = ni.getTypeName(); 
        if(name.equals("WIFI"))
            return true;
        else
            return false;
    }
    catch(Exception e)
    {
        return false;
    }
}
我在这里使用哪种上下文?getAplicationContext()或getBaseContext()或我是否只放了“this”(我正在从服务调用函数)。

尝试以下方法:

  public boolean isUsingWiFi() {
    ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiInfo = connectivity
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (wifiInfo != null && wifiInfo.getState() == NetworkInfo.State.CONNECTED
            || wifiInfo.getState() == NetworkInfo.State.CONNECTING) {
        return true;
    }

    return false;
}
您也可以将其用于移动类型:

  public boolean isUsingMobileData() {
    ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo mobileInfo = connectivity
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mobileInfo != null && mobileInfo.getState() == NetworkInfo.State.CONNECTED
            || mobileInfo.getState() == NetworkInfo.State.CONNECTING) {
        return true;
    }

    return false;
}

很好的实现,尽管我认为方法名应该是
isUsingWiFi()
。可以说,移动数据也是“无线的”…:-)警告-我看到返回的NetworkInfo对象为Null的情况。这些情况是什么?没有联系?