我需要检查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;
}
}
清单文件中的权限:
<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"/>
3 回答
Oreo 8.1设备需要启用粗略位置运行时权限以及位置服务才能检索连接的SSID,因为它可以推断用户位置 .
更多信息是available here
与this有关
在Android Oreo中,您可以使用
ConnectivityManager
来了解您的wifi SSID .允许
获取SSID的代码
这是在Android Oreo 8.1.0中测试的 . 您将获得带有双引号的SSID .
如果您在尝试Yaswant Narayan和behelit答案后遇到问题,请确保在尝试获取SSID时启用了设备中的位置/ GPS . 即使您已获得Android Oreo及以上设备的相关权限,如果用户关闭了位置/ GPS,您也可以从这些设备获取 .