1.正常下获取当前已连接wifil的ssid方法如下。
WifiManager wifiManager = (WifiManager) Utils.getApp().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
对于低版本安卓设备,这是可行的,但是对于高版本设备就会出现获取到的wifi名称为的现象,这是因为安卓10获取WiFi名称需要定位权限。
2.完整获取流程如下:
① 在AndroidManifest.xml中加入wifi权限和位置权限。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
ACCESS_FINE_LOCATION权限也是必要的,这是安卓10新加的权限。
② 在Activity中动态请求权限。
String[] permissions = new String[]{
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
};
ActivityCompat.requestPermissions(this, permissions, 1);
③ 动态请求权限成功后,再执行获取WiFi信息即可。
WifiManager wifiManager = (WifiManager) Utils.getApp().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
需要注意的是,即便请求权限成功,设备的GPS位置也需要打开,否则也获取不到wifi的ssid。