·  阅读

一直都在做wifi相关的东西

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

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

wifi名称获取代码

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

8.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);
            }复制代码

二、申请权限 定位权限就好了

    <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'
复制代码

github.com/yanzhenjie/…

 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);
        }复制代码


分类:
Android
标签: