如何在Android中获得WiFi的唯一ID?

时间:2015-01-30 08:08:38

标签: android

我可以使用代码String ssid = wifiInfo.getSSID()来获取WiFi的名称, 但是你知道很多WiFi都有同名的“MyWiFi”,我希望得到一个WiFi的唯一ID,我该怎么办?谢谢!

提示: 我希望只有当我连接到名为“MyWiFi”的家庭WiFi时,才能在我的应用程序中上传文件,但在其他地方,有许多名为“MyWiFi”的WiFi。

  if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
        NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
        if (networkInfo.isConnected()) {
            // Wifi is connected                
            WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE);
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            String ssid = wifiInfo.getSSID();

            Toast.makeText(context, "OK " + ssid, Toast.LENGTH_LONG).show();
        }
    } else if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
        NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
        if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI && ! networkInfo.isConnected()) {
            Toast.makeText(context, "Wifi is disconnected: "+String.valueOf(networkInfo), Toast.LENGTH_LONG).show();
        }
    }

3 个答案:

答案 0 :(得分:2)

尝试使用以下网络ID。

getNetworkId()

用于在对请求者执行操作时识别网络。

更新您的代码

 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
     WifiInfo wifiInfo = wifiManager.getConnectionInfo();
     String ssid = wifiInfo.getSSID();
     int networkid = wifiInfo.getNetworkId();
     Toast.makeText(context, "OK " + ssid, Toast.LENGTH_LONG).show();
     Toast.makeText(context, "Network ID  " + networkid, Toast.LENGTH_LONG).show();

答案 1 :(得分:0)

  

添加的任何wifi的唯一ID是NETWORK_ID [请求者用于识别此网络配置条目的ID号。]。

我如何获得网络ID?

如果您有WifiConfiguration对象,您将获得其网络ID

关于apis的更多信息,请here

答案 2 :(得分:0)