相关疑难解决方法(0)

在Oreo(8.1.0)上没有获得正确的Wifi SSID.虽然它连接到带有SSID的wifi,但它显示<unknown ssid>

我需要检查android上当前连接的wifi SSID.我分别用诺基亚6和OnePlus 5检查了Oreo 8.1.0和Oreo 8.0.其他具有不同操作系统版本的手机正常使用此代码.我的代码有什么问题吗?

private WifiInfo wifiInfo;
private String ssid = "";
private WifiManager wifiManager;

private boolean getWifiStatus() {
    wifiManager= (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    wifiInfo = wifiManager.getConnectionInfo();
    ssid = "";
    ssid = wifiInfo.getSSID();
    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isWiFi = false;
    if(activeNetwork != null){
        isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
    }

    Log.d(TAG, "getWifiStatus: " + ssid);
    if(ssid.contains("TripleMZim") && wifiManager.isWifiEnabled() && isWiFi ){
        return true;
    }
    else{
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

清单文件中的权限:

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

android ssid wifi android-8.0-oreo

10
推荐指数
3
解决办法
1万
查看次数

Android 10.0如何获取WIFI SSID?

在 Android 9.0&8.0 中获取 SSID 没有问题,
但在 Android 10.0(Q) 中无法获取 SSID。
我应该怎么做?Android 10.0 中有关 wifi 的文档链接在哪里?我试图找到该文档,但找不到。

Android 9.0&8.0获取SSID没有问题

WifiManager mWifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
assert mWifiManager != null;
WifiInfo info = mWifiManager.getConnectionInfo();
return info.getSSID();
Run Code Online (Sandbox Code Playgroud)
ConnectivityManager connManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
assert connManager != null;
NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
if (networkInfo.isConnected()) {
     if (networkInfo.getExtraInfo() != null) {
        return networkInfo.getExtraInfo().replace("\"", "");
    }
}
Run Code Online (Sandbox Code Playgroud)

android wifi android-wifi

9
推荐指数
1
解决办法
9762
查看次数

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

如果我使用 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 或更高版本时发生了什么变化?我们还应该做些什么来获得这些值?

android wifi wifimanager android-wifi android-8.0-oreo

5
推荐指数
1
解决办法
2852
查看次数