如果 targetSdkVersion >= 26,WifiManager.WifiInfo getSSID 和 getBSSID 不起作用

Nul*_*ion 5 android wifi wifimanager android-wifi android-8.0-oreo

如果我使用 API 27 编译但目标 API 25,我将正确获取这些值。如果我将 targetSdkVersion 设置为 27,则无法正确检索这些值。

定位 SDK 25 或更少,值是正确的,但定位 26 或更多,我得到这些值:

SSID 给出 <unknown ssid>

BBSSID 给出 02:00:00:00:00:00

这些是我的清单权限,都是普通权限,不需要用户授予:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

这是示例代码:

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo connectionInfo = wifiManager.getConnectionInfo();
connectionInfo.getSSID();
connectionInfo.getBSSID();
Run Code Online (Sandbox Code Playgroud)

面向 SDK 26 或更高版本时发生了什么变化?我们还应该做些什么来获得这些值?

Sam*_*net 5

您需要从 API 27 开始的位置权限