NetworkInfo的getTypeName()返回移动设备,尽管连接到移动设备上的WIFI

时间:2014-06-08 02:08:31

标签: android

在以下代码中,即使连接到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";

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

if (activeinfo.getTypeName() == "WIFI") {

与其他编程语言不同,在Java中使用Strings的==运算符不会产生通常预期的结果。那是因为它测试reference相等(即内存中的相同位置)而不是内容相等。

请查看How do I compare strings in Java?