2010-08-20 29 views
55

Tôi nghĩ rằng tôi nên sử dụng NetworkInterface :: getDisplayName. Tôi có một số tên, nhưng tên này khác với tên mà tôi có thể thấy, khi tôi chọn mạng mà tôi muốn kết nối.Làm thế nào để có được tên của mạng wifi ra khỏi android bằng cách sử dụng API Android?

Xin giúp ..

[EDIT]

theo công Loxley câu trả lời:

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

Có ai biết cần phải có quyền nào để thực hiện việc này không? –

+8

android.permission.ACCESS_WIFI_STATE –

Trả lời

39

android.net.wifi.WifiInfo.getSSID?

17

này (trộn và kết hợp các câu trả lời khác nhau từ Marakana và những người khác) sẽ đồng thời có được tất cả mọi thứ bạn muốn trích xuất từ:

  1. tất cả các router wifi trong phạm vi
  2. kết nối wifi router
  3. tất cả các lưu trữ mạng wifi (trên thiết bị của bạn)

    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; 
    } 
    

KHUYẾN CÁO: trong khi đây là mã hoạt động, không phải mã giả, mục đích duy nhất của nó là minh họa các phương pháp trích xuất dữ liệu từ kết nối wifi và cần được điều chỉnh (và làm sạch) trước khi sử dụng.

+1

1. Ai là Marakana? 2. kiểm tra: http://stackoverflow.com/a/16137563/281545 –

+0

@Mr_and_Mrs_D 1. marakana là marko gargenta, tác giả của nhiều dự án mẫu. 2. như tôi đã nói, đây là một kết hợp và kết hợp, bao gồm cả mã mẫu bạn tham khảo. :) –

+0

Tôi có nghĩa là các NPE trong mã này (xem câu trả lời của tôi được liên kết ở trên) –

19
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; 
} 
Các vấn đề liên quan