Android获取WIFI 的ssid 方法适配Android9.0

本文首次发表于 :
蜗牛魔方-Android获取WIFI SSID方法,适配9.0
(https://github.com/Hayquan/JavaExtensionUtilsForAndroid)

废话不多说了直接上代码

首先在Androidmanifast 中添加权限

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
## 获取SSID 的方法如下
     * 获取SSID
     * @param activity 上下文
     * @return  WIFI 的SSID
    public String getWIFISSID(Activity activity) {
         String ssid="unknown id";
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O||Build.VERSION.SDK_INT==Build.VERSION_CODES.P) {
            WifiManager mWifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            assert mWifiManager != null;
            WifiInfo info = mWifiManager.getConnectionInfo();
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
                return info.getSSID();
            } else {
                return info.getSSID().replace("\"", "");
        } else if (Build.VERSION.SDK_INT==Build.VERSION_CODES.O_MR1){
            ConnectivityManager connManager = (ConnectivityManager) activity.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
            assert connManager != null;
            NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
            if (networkInfo.isConnected()) {
                if (networkInfo.getExtraInfo()!=null){
                    return networkInfo.getExtraInfo().replace("\"","");
        return ssid;

MainActivity方法。布局文件太简单了 。不贴代码了

public class MainActivity extends AppCompatActivity { private PermissionHelper permissionHelper; TextView mTvSSID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvSSID = findViewById(R.id.tvSSID); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); permissionHelper = new PermissionHelper(this); getWifiSSid(); private void getWifiSSid() { permissionHelper.check(Manifest.permission.ACCESS_FINE_LOCATION).onSuccess(this::onSuccess).onDenied(this::onDenied).onNeverAskAgain(this::onNeverAskAgain).run(); private void onSuccess() { mTvSSID.setText(DeviceUtil.INSTANCE.getWIFISSID(this)); private void onDenied() { ToastUtil.INSTANCE.show(this, "权限被拒绝,9.0系统无法获取SSID"); private void onNeverAskAgain() { ToastUtil.INSTANCE.show(this, "权限被拒绝,9.0系统无法获取SSID,下次不会在询问了"); @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);

Android8.1获取方法

需要在Androidmanifast.xml文件中添加如下权限

  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    ConnectivityManager connManager = (ConnectivityManager) activity.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
            assert connManager != null;
            NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
            if (networkInfo.isConnected()) {
                if (networkInfo.getExtraInfo()!=null){
                    return networkInfo.getExtraInfo().replace("\"","");

9.0 以后需要申请运行时权限

在Androidmanifast.xml文件中添加

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

权限申请框架

在model 中的gradle中加入以下依赖。

  implementation 'ru.alexbykov:nopermission:1.1.2'
仅由一类组成。
为什么使用NoPermission:不是框架。
这只是一个类对话框,其中解释了为什么应用程序需要permi NoPermission简单Android库来进行权限请求。
仅由一类组成。
为什么NoPermission:不是框架。
这只是一个类对话框,其中解释了应用程序为何需要权限(带有自定义标题,消息以及按钮的文字和颜色)的说明。再也不问功能自动检查是否授予了权限(不需要检查api版本)支持Gradle编译'ru.alexbykov:nopermission:1.1.2'安装PermissionHelper permissi
                                    许久没有做一些总结了,最近项目有些忙。在获取Android终端连接WiFiSSID时(也就是你当前手机连接的无线网名称),发现了一个问题,不同的Android版本下获取到的SSID是有一些差别的,当然名字不会变。举个例子,比如我配置了WiFi的名称是haha,有些手机获取到的就是haha,而有些获取到的却是"haha"——加了双引号。有这么一个需求,控制用户连接指定的WiFi。假定允许连接的Wi...
	<!-- 录像 -->
    <uses-feature android:name="android.hardware.camera"/>
    <uses-feature android:name="android.hardware.camera.au
                                    真的没话说了.......,为何要这样.......,觉得好玩吗.......,谷歌那个写这个获取wifiSSID的接口的工程师闲的蛋疼。
        获取wifiSSID的方法如下:
android.net.wifi.WifiManager mWifiManager = (WifiManager) MainActivity.this
							.getSystemService(Co
                                    当我的Android设备连接到WIFI时,我正在尝试获取WIFI网络的SSID .我已经注册了一个BroadcastReceiver,正在监听 android.net.wifi.supplicant.CONNECTION_CHANGE  . 我在WIFI断开连接或重新连接时收到通知 . 不幸的是,我可以't get the network'的SSID .我正在使用以下代码来查找SSID:WifiM...
public String getWifiName(Context context){
            //获取WifiSSID
WifiManager wifiManager=(WifiManager) context.getSystemService(context.WIFI_SERVICE);
            if(Build.VERSION.SDK_INT...
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    &lt...