how to get current wifi connection info in android

前端 未结 3 679
天涯浪人
天涯浪人 2020-12-15 03:04

I\'m trying to find if scanResult is the current connected wifi network.

here is my code

public boolean IsCurrentConnectedWifi(ScanResul         


        
相关标签:
3条回答
  • 2020-12-15 03:41

    Update Android Oreo. You will also need to add ACCESS_FINE_LOCATION Permission in Manifest otherwise it will return unknown SSID

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
    
     fun getCurrentSsid(context: Context): String {
                var ssid = "NA"
                val connManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
                val networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
                if (networkInfo.isConnected) {
                    val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
                    val connectionInfo = wifiManager.connectionInfo
                    if (connectionInfo != null && !connectionInfo.ssid.isEmpty()) {
                        ssid = connectionInfo.ssid
                    }
                }
                return ssid
            }
    
    0 讨论(0)
  • 2020-12-15 03:44

    My (used to be) non-deprecated, modified approach to the current answer

    https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetworkInfo()

    public static String getCurrentSsid(Context context) {
            String ssid = null;
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            if (networkInfo == null) {
                return null;
            }
    
            if (networkInfo.isConnected()) {
                final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
                if (connectionInfo != null && !StringUtil.isBlank(connectionInfo.getSSID())) {
                    ssid = connectionInfo.getSSID();
                }
            }
    
        return ssid;
    }
    
    0 讨论(0)
  • 2020-12-15 03:53

    Most probably you have already found answer: currentWifi.getSSID() is quoted in most cases where scanResult.SSID is not (and of course you must not use == on strings :)).

    Try something like this, it returns current SSID or null:

    public static 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 && !StringUtil.isBlank(connectionInfo.getSSID())) {
          ssid = connectionInfo.getSSID();
        }
      }
      return ssid;
    }
    

    also permissions are required:

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    StringUtil is not a standard Android class, so you can use TextUtils instead. The code then looks like this:

    public static 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 && !TextUtils.isEmpty(connectionInfo.getSSID())) {
          ssid = connectionInfo.getSSID();
        }
      }
      return ssid;
    }
    
    0 讨论(0)
提交回复
热议问题