2010-08-20 12 views
55

Ho pensato che dovrei usare NetworkInterface :: getDisplayName. Ho un nome, ma questo nome è diverso da questo nome che posso vedere, quando scelgo a quale rete voglio collegarmi.Come ottenere il nome della rete wifi da Android usando l'API di Android?

Si prega di aiutare ..

[EDIT]

di tronchi con al Loxley risposta:

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

Qualcuno sa quali autorizzazioni sono necessarie per fare questo? –

+8

android.permission.ACCESS_WIFI_STATE –

risposta

39

android.net.wifi.WifiInfo.getSSID?

17

questo (mix and match di varie risposte da Marakana e altri) saranno contemporaneamente ottenere tutto ciò che si desidera estrarre da:

  1. tutti i router WiFi nella gamma
  2. router wifi collegato
  3. tutti memorizzati reti WiFi (sul dispositivo)

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

NOTA BENE: mentre questo è un codice funzionante, non uno pseudo codice, il suo unico scopo è illustrare i metodi per l'estrazione dei dati dalle connessioni wifi e dovrebbe essere adattato (e pulito) prima dell'uso.

+1

1. chi è MArakana? 2. controlla: http://stackoverflow.com/a/16137563/281545 –

+0

@Mr_and_Mrs_D 1. marakana è marko gargenta, l'autore di molti progetti di esempio. 2. Come ho detto, questo è un mix and match, incluso il codice di esempio a cui fai riferimento. :) –

+0

Intendevo gli NPE in questo codice (vedi la mia risposta linkata sopra) –

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