code

Android API를 사용하여 Android에서 Wi-Fi 네트워크의 이름을 얻는 방법은 무엇입니까?

codestyles 2020. 12. 5. 09:48
반응형

Android API를 사용하여 Android에서 Wi-Fi 네트워크의 이름을 얻는 방법은 무엇입니까?


NetworkInterface :: getDisplayName을 사용해야한다고 생각했습니다. 이름이 있지만이 이름은 연결할 네트워크를 선택할 때 볼 수있는 이름과 다릅니다.

도와주세요..

[편집하다]

Loxley 답변에 따르면 :

WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String name = wifiInfo.getSSID();

android.net.wifi.WifiInfo.getSSID?


public String getWifiName(Context context) {
    WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    if (manager.isWifiEnabled()) {
       WifiInfo wifiInfo = manager.getConnectionInfo();
       if (wifiInfo != null) {
          DetailedState state = WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState());
          if (state == DetailedState.CONNECTED || state == DetailedState.OBTAINING_IPADDR) {
              return wifiInfo.getSSID();
          }
       }
    }
    return null;
}

이것은 (Marakana 및 다른 사람들의 다양한 답변의 혼합 및 일치)에서 추출하려는 모든 것을 동시에 얻을 수 있습니다.

  1. 범위 내의 모든 Wi-Fi 라우터
  2. 연결된 와이파이 라우터
  3. 저장된 모든 Wi-Fi 네트워크 (기기에 있음)

    public String getCurrentSsid(Context context) {
    
      String ssid = null;
      ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
      NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
      if (networkInfo.isConnected()) {
        final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
        if (connectionInfo != null && !(connectionInfo.getSSID().equals(""))) {
            //if (connectionInfo != null && !StringUtil.isBlank(connectionInfo.getSSID())) {
          ssid = connectionInfo.getSSID();
        }
     // Get WiFi status MARAKANA
        WifiInfo info = wifiManager.getConnectionInfo();
        String textStatus = "";
        textStatus += "\n\nWiFi Status: " + info.toString();
        String BSSID = info.getBSSID();
        String MAC = info.getMacAddress();
    
        List<ScanResult> results = wifiManager.getScanResults();
        ScanResult bestSignal = null;
        int count = 1;
        String etWifiList = "";
        for (ScanResult result : results) {
            etWifiList += count++ + ". " + result.SSID + " : " + result.level + "\n" +
                    result.BSSID + "\n" + result.capabilities +"\n" +
                    "\n=======================\n";
        }
        Log.v(TAG, "from SO: \n"+etWifiList);
    
        // List stored networks
        List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();
        for (WifiConfiguration config : configs) {
            textStatus+= "\n\n" + config.toString();
        }
        Log.v(TAG,"from marakana: \n"+textStatus);
      }
      return ssid;
    }
    

면책 조항 :이 코드는 의사 코드가 아니라 작업 코드이지만 유일한 목적은 Wi-Fi 연결에서 데이터를 추출하는 방법을 설명하는 것이므로 사용하기 전에 조정 (및 정리)해야합니다.

참고 URL : https://stackoverflow.com/questions/3531940/how-to-get-name-of-wifi-network-out-of-android-using-android-api

반응형