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