android - 如果 targetSdkVersion >= 26,WifiManager.WifiInfo getSSID 和 getBSSID 不工作

标签 android wifi android-wifi wifimanager android-8.0-oreo

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

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

SSID 给出 <unknown ssid>

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

这些是我的 list 权限,都是正常权限,不需要用户授予:

<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" />

这是示例代码:

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo connectionInfo = wifiManager.getConnectionInfo();
connectionInfo.getSSID();
connectionInfo.getBSSID();

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

最佳答案

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

关于android - 如果 targetSdkVersion >= 26,WifiManager.WifiInfo getSSID 和 getBSSID 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224762/

相关文章:

android - adb 命令在环境显示设置中禁用 "Always ON"和 "Lift to check phone"

arduino wifi 与 cylon.js 或 johnny5.js

Android WiFi Direct 演示问题

android - Google home 如何以编程方式获取特定 wifi 的密码?

android - Eclipse 设备未显示在设备选择器中

java - map 在 Nexus 5X API 28 中崩溃,但在 Google PIXEL 2 XL API 27 中运行完美

android - 将响应返回为 Flowable 时不会调用 onComplete

node.js - 使用 NodeJS 的路由器(代理)?

c - 如何使用 libnl 将我的设备连接到 wifi?

android - 使用 Android 将特定于供应商的信息插入并嗅探到信标帧中