解决Android 8.0和9.0无法获取SSID (unknow ssid)

一直都在做wifi相关的东西

今天遇到一个问题是8.0的机型无法获取到ssid

然后就查询了一番 终于找到解决方案

wifi名称获取代码

     WifiManager my_wifiManager = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE));
            assert my_wifiManager != null;
            wifiInfo = my_wifiManager.getConnectionInfo();
            ssid = wifiInfo.getSSID();

Android8.0 解决方案

一、就是用下面的代码可以获取(不建议使用)

         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
                ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                assert cm != null;
                NetworkInfo info = cm.getActiveNetworkInfo();
                if (info != null && info.isConnected()) {
                    ssid = info.getExtraInfo();
                    logger.info("WiFi SSID: " + ssid);

                }
            }

二、8.0强烈推荐 申请权限 定位权限就可获取​​​​​​​

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

9.0在8.0基础上新增权限​​​​​​​

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

9.0华为手机无法获取解决方案

     WifiManager my_wifiManager = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE));            assert my_wifiManager != null;            wifiInfo = my_wifiManager.getConnectionInfo();            ssid = wifiInfo.getSSID();int networkId = wifiInfo.getNetworkId();                    List<WifiConfiguration> configuredNetworks = my_wifiManager.getConfiguredNetworks();                    for (WifiConfiguration wifiConfiguration:configuredNetworks){                        if (wifiConfiguration.networkId==networkId){                            ssid=wifiConfiguration.SSID;                            break;                        }                    }

权限申请方式

使用开源库

    implementation 'com.yanzhenjie:permission:2.0.0-rc12'

https://github.com/yanzhenjie/AndPermission

​​​​​​​

if (AndPermission.hasPermissions(this, Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)) {            if (NetUtils.getInstance().isWifi(TabActivity.this)) {                startActivity(new Intent(TabActivity.this, WifiManagerActivity.class));                overridePendingTransition(R.anim.in_from_right, R.anim.out_to_right);            } else {                com.xinli.wenet.utils.Toast.show(TabActivity.this, "请连接Wi-Fi后操作", 1);
            }        } else {            requestPermission(Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION);        } 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值