|
最近,有客户反馈Android 9.0及其以上版本的APP获取SSID失败,于是开一篇与此相关的帖子。
Andriod 9.0相比于8.1而言,其获取SSID时需要的权限增加了,增加了以下两个:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
同时,也需要在build.gradle文件中申明:
implementation 'ru.alexbykov:nopermission:1.1.2'处理完以后,编译下载,oneplus和xiaomi手机通过,SSID成功获取;新版本APK发给客户;客户再次反映华为手机依旧为null重新排查发现,华为的Android9.0手机通过NetworkInfo.getExtraInfo()接口返回为空,只好采用列表比对的方法进行处理,代码如下:WifiManager mwifiManager=(WifiManager)this.getApplication().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if(null!=mwifiManager){
WifiInfo info=mwifiManager.getConnectionInfo();
int networkId=info.getNetworkId();
List<WifiConfiguration> netConList=mwifiManager.getConfiguredNetworks();
for(WifiConfiguration wificonf:netConList){
if (wificonf.networkId==networkId){
mSsid=(wificonf.SSID).replace("\"","");
}
}
}其中mSsid为String形式的SSID。
|
|