无法在 Android 12 中使用 onCapativityChanged 获取 WIFI SSID

Chi*_*uva 12 android ssid wifi android-wifi android-12

描述

我无法使用 Android-12 中的类获取 WIFI onCapabilitiesChangedSSID ConnectivityManager.NetworkCallback。在 Android-12 中,getConnectionInfo 已弃用。因此,正如 android 文档所建议的那样,我正在尝试WifiInfo使用onCapabilitiesChanged.

像这样,

@Override
public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {
        super.onCapabilitiesChanged(network, networkCapabilities);
        WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我打印该WifiInfo对象时。它将打印SSID:<unknown ssid>getHiddenSSID返回 true。

意想不到的行为是,

Android-12设备连接1个WIFI(例如ABC)

  • 当我尝试使用 获取 WIFI SSID 时getConnectionInfo。它返回 SSID: ABC 和 getHiddenSSID: false
  • 但是,对于同一网络,当我尝试使用 获取 WIFI SSID 时 onCapabilitiesChanged,它返回 SSID: <unknown ssid> 和 getHiddenSSID : true

注意:提供位置许可。

Chi*_*uva 13

花了几天时间,终于找到了为什么我没有获得SSID onCapabilitiesChanged

我们在创建对象时需要传入构造FLAG_INCLUDE_LOCATION_INFO函数。ConnectivityManager.NetworkCallback

在默认构造函数中,位置敏感信息被隐藏,因为我们无法在onCapabilitiesChanged. 一旦我们创建NetworkCallback带有标志的对象,我们将获得 SSID。

关联

  • 31号之后才可以使用,在那之前还有其他选择吗? (4认同)