在 Android13/API 级别 33 中获取 Wifi SSID

问题描述 投票:0回答:1

当我尝试获取 WIFI-SSID 时,我得到了 UNKNOWN_SSID

下面是我的代码:

if(ContextCompat.checkSelfPermission(MainActivity.super.getApplicationContext(), Manifest.permission.ACCESS_WIFI_STATE)== PackageManager.PERMISSION_GRANTED){
    if(ContextCompat.checkSelfPermission(MainActivity.super.getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED){
        ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
        Network netnow = cm.getActiveNetwork();
        WifiInfo wf =  (WifiInfo)cm.getNetworkCapabilities(netnow).getTransportInfo();
        String ssid = wf.getSSID();
    }
}

我想获得正确的 SSID。 文档说WIFIinfo需要和WifiManager#getScanResults一样的权限,我查了还是获取不到ssid,不知道为什么,怎么解决。 1 2

android wifimanager
1个回答
0
投票

有人做过吗?我想在 toast 上显示 SSID 的名称 usinf 版本 sdk33.. 但只显示“未知 ssid>.. ia 已经设置了一些权限: android:maxSdkVersion="32" />

<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
    android:usesPermissionFlags="neverForLocation" /><!--NECESSÁRIO PARA versões acima da 33 ao invés do fine location-->

这是我的功能: public boolean verificaConexaoWifi(String networkName) { ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo();

    runOnUiThread(new Runnable() {
        public void run() {
            String connectedNetworkName = wifiInfo.getSSID(); // obter o nome da rede Wi-Fi conectada
            Toast.makeText(getApplicationContext(), "Conectado à rede: " + connectedNetworkName, Toast.LENGTH_SHORT).show(); // exibir o Toast com o nome da rede
        }
    });


   if (wifiInfo != null && wifiInfo.getSSID().equals(networkName)) {
    //if (wifiInfo != null && wifiInfo.getSSID().replace("\"", "").equals(networkName)) {

        //Toast.makeText(getApplicationContext(), "CONECTADO AO PLACAR", Toast.LENGTH_SHORT).show();
        return true; // O dispositivo está conectado à rede Wi-Fi especificada
    } else {
             runOnUiThread(new Runnable() {
             public void run() {
                  Toast.makeText(getApplicationContext(), "NÃO CONECTADO AO PLACAR", Toast.LENGTH_SHORT).show();
                                }         });
        return false; // O dispositivo não está conectado à rede Wi-Fi especificada
    }
} else {
    return false; // O dispositivo não está conectado à Internet ou não está conectado via Wi-Fi
}
}//------fim fUNÇÃO PARA VERIFICAR SE ESTA CONECTADO AO WiFi
© www.soinside.com 2019 - 2024. All rights reserved.