当我尝试获取 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,不知道为什么,怎么解决。
有人做过吗?我想在 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