How to get name of wifi-network out of android using android API?
Asked Answered
L

4

62

I thought that I should use NetworkInterface::getDisplayName. I got some name, but this name is different that this name which I can see, when I choosing to which network I want to connect.

Lani answered 20/8, 2010 at 14:43 Comment(2)
Does anyone know which permissions are needed to do this?Crimple
android.permission.ACCESS_WIFI_STATESeasoning
T
46

android.net.wifi.WifiInfo.getSSID?


WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String name = wifiInfo.getSSID();
Tench answered 20/8, 2010 at 14:53 Comment(3)
For Xamarin C#: Android.Net.Wifi.WifiInfo.SSIDAnisaanise
I have added the question asker's answer into your answer. I hope that is ok @Loxley.Prayerful
WifiManager is not known in xamarin, do I need to add some packaqe ? And what is context ?Vermont
A
25
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;
}
Ash answered 20/6, 2014 at 12:9 Comment(1)
What is WifiManager ? How do I get xamarin to know this ?Vermont
A
19

This (mix and match of various answers from Marakana and others) will simultaneously get everything you want to extract from:

  1. all wifi routers in range
  2. connected wifi router
  3. all stored wifi networks (on your device)

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

DISCLAIMER: while this is working code, not pseudo code, its only purpose is to illustrate the methods for data extraction from wifi connections and it should be adapted (and cleaned) before use.

Awad answered 12/4, 2013 at 16:12 Comment(4)
@Mr_and_Mrs_D 1. marakana is marko gargenta, the author of many sample projects. 2. as i said, this is a mix and match, including the sample code you refer to. :)Awad
After detecting all wi-fi, how to connect with that wi-fi.Hedgerow
ask that as a separate question, please, @DennySharma. :)Awad
Don't forget the permissions: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>Spenserian
B
0

Simple as 2 lines

WifiManager w=(WifiManager)getSystemService(Context.WIFI_SERVICE);
String wifi=w.getConnectionInfo().getSSID();

Remember to put this in your Manifest

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Boil answered 5/3, 2021 at 17:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.