解决Android 8.0和9.0无法获取SSID (unknow ssid)
  ttOzQgS7km1w 2023年12月12日 36 0


一直都在做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);
        }
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
ttOzQgS7km1w