在以下代码中,即使连接到wifi,activeinfo.getTypeName()也会返回mobile。我在某处读到了模拟器上无法检测到wifi,所以我甚至在我的设备上尝试过。但它仍然返回移动 - 当连接到WiFi或移动数据(我甚至尝试关闭移动数据,只是使用wifi而不是打开两者) - 和"没有连接"当我关闭wifi和移动数据时。
ConnectivityManager conmgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeinfo = conmgr.getActiveNetworkInfo();
WifiManager wifi=(WifiManager) getSystemService(Context.WIFI_SERVICE);
Log.e("sometag", activeinfo.getTypeName());
String ssid;
if(activeinfo!=null && activeinfo.isConnected())
{
//eventhough the following comparison is wrong, the next else should return "wifi" right? well, it doesn't.
if(activeinfo.getTypeName()=="WIFI") {
WifiInfo w=wifi.getConnectionInfo();
ssid= w.getSSID();
}
else
{
ssid = activeinfo.getTypeName();
}
}
else
ssid= "not connected";
答案 0 :(得分:0)
问题在于这一行:
if (activeinfo.getTypeName() == "WIFI") {
与其他编程语言不同,在Java中使用Strings的==
运算符不会产生通常预期的结果。那是因为它测试reference
相等(即内存中的相同位置)而不是内容相等。