Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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
Java Android WiFiInfo错误_Java_Android_Android Wifi - Fatal编程技术网

Java Android WiFiInfo错误

Java Android WiFiInfo错误,java,android,android-wifi,Java,Android,Android Wifi,我正在做一个利用互联网的应用程序 我正在使用WiFiInfo类了解网络可用状态,并使用WifiManager启用和管理Wi-fi连接(如果可用) 但结果是未知的ssid。我还修改了AndroidManifest.xml以授予android.permission.ACCESS\u WIFI\u状态的权限。也许你们中有人能帮我。。。 代码如下: TextView textWifiManager = (TextView)findViewById(R.id.WifiManager); Te

我正在做一个利用互联网的应用程序

我正在使用WiFiInfo类了解网络可用状态,并使用WifiManager启用和管理Wi-fi连接(如果可用)

但结果是未知的ssid。我还修改了AndroidManifest.xml以授予android.permission.ACCESS\u WIFI\u状态的权限。也许你们中有人能帮我。。。 代码如下:

TextView textWifiManager = (TextView)findViewById(R.id.WifiManager);
       TextView textWifiInfo = (TextView)findViewById(R.id.WifiInfo);
       TextView textIp = (TextView)findViewById(R.id.Ip);

       WifiManager myWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

       WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
       int myIp = myWifiInfo.getIpAddress();

       textWifiManager.setText(myWifiManager.toString());
       textWifiInfo.setText(myWifiInfo.toString());

       int intMyIp3 = myIp/0x1000000;
       int intMyIp3mod = myIp%0x1000000;

       int intMyIp2 = intMyIp3mod/0x10000;
       int intMyIp2mod = intMyIp3mod%0x10000;

       int intMyIp1 = intMyIp2mod/0x100;
       int intMyIp0 = intMyIp2mod%0x100;

       textIp.setText(String.valueOf(intMyIp0)
         + "." + String.valueOf(intMyIp1)
         + "." + String.valueOf(intMyIp2)
         + "." + String.valueOf(intMyIp3)
         );
   }
}

奇怪的是,它会返回unknown而不是null,但从1年前开始,这里就记录了一个bug

详细状态和仰卧状态是什么


编辑:尝试使其更有帮助。请参见此处的我的答案,以便在wifi处于正确状态时获取wifi信息。

编辑:确保您的wifi已打开并连接到网络。调用getSSID(),并使用权限访问\网络\状态

EDIT2:我刚刚检查了一个我的应用程序,它既有接入WIFI状态,也有接入网络状态

改为调用getSSID(),如下所示:

public String getConnectedNetworkSSID() {
    WifiManager wifiMgr = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
    String name = wifiInfo.getSSID();
    return name;
}
这将返回设备连接到的wifi网络的名称。如果设备未连接到wifi网络,它将返回未知。请尝试以下操作:

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetworkUtil {

public static int TYPE_WIFI = 1;
public static int TYPE_MOBILE = 2;
public static int TYPE_NOT_CONNECTED = 0;
public static String connectionStatus = "";
public static String connectionKind = "";
public static String connectedTo = "";


public static int getConnectivityStatus(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);        
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (null != activeNetwork) {
        if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI){
            try{
                connectedTo = activeNetwork.getExtraInfo().replace("\"", "");                   
            }
            catch(Exception WifiNet){
                connectedTo = "WiFi";                   
            }                               
            return TYPE_WIFI;             
        }
        if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE){
            try{
                connectedTo = activeNetwork.getExtraInfo();
            }
            catch(Exception MobileNet){
                connectedTo = "2g/3g/LTE";
            }
            return TYPE_MOBILE;
        }
    }
    connectedTo = "N/A";
    return TYPE_NOT_CONNECTED;
}

public static String getConnectivityStatusString(Context context) {
    int conn = NetworkUtil.getConnectivityStatus(context);
    String status = null;
    try{
        if (conn == NetworkUtil.TYPE_WIFI) {
            status = "Wifi enabled"+" "+connectedTo;            
            connectionKind = "Wifi";
        } else if (conn == NetworkUtil.TYPE_MOBILE) {
            status = "Mobile data enabled";
            connectionKind = "Mobile";
        } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
            status = "Not connected to Internet";
            connectionKind = "N/A";
        }           
    }
    catch(Exception mobile){
        if (conn == NetworkUtil.TYPE_WIFI) {
            status = "Wifi enabled"+" "+connectedTo;            
            connectionKind = "Wifi";
        } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
            status = "Not connected to Internet";
            connectionKind = "N/A";
        }
    }        
    return status;
}
}

我不是OP,但我面临着同样的问题<代码>从wifiInfo.getSSID()返回。添加访问\网络\状态无法解决此问题。zmbq-奇怪的是,自从我回答了您的问题“连接WIFI时获取SSID?”后,您是否仍然存在此问题?这如何帮助获取SSID?通过调用第二种方法,您可以获取连接状态,如果您使用WIFI,它会添加SSID(connectedTo变量)。。。我有一个小服务,显示了一个祝酒词,以知道我连接到哪个网络,而不查看设置。@Eric Woodruff不,不是。OP调用了错误的方法。他应该调用getSSID()而不是getIpAddress()和toString();这仍然会返回相同的“未知”值。问题的前提是他是关联的,“但结果是未知的ssid”。我同意这是隐含的,但他在问题中没有实际说明。在任何情况下,他都应该确保自己已连接到WIFI(而不仅仅是移动数据),他应该调用getSSID(),并且他需要访问WIFI的权限状态。