我目前正在将我的应用迁移到Android Q。 我想列出所有配置的WiFi网络,在Q之前,我可以使用WiFiManager的getConfiguredNetworks函数来实现。不幸的是,这个方法在API级别29上已被弃用,并且在Android Q设备上返回一个空列表。
弃用注释仅适用于我还想连接到这些网络的情况。我不想这样做,我只想列出网络及其名称并获取其内部id
。您有任何想法如何在Q中执行此操作吗?
我目前正在将我的应用迁移到Android Q。 我想列出所有配置的WiFi网络,在Q之前,我可以使用WiFiManager的getConfiguredNetworks函数来实现。不幸的是,这个方法在API级别29上已被弃用,并且在Android Q设备上返回一个空列表。
弃用注释仅适用于我还想连接到这些网络的情况。我不想这样做,我只想列出网络及其名称并获取其内部id
。您有任何想法如何在Q中执行此操作吗?
android {
compileSdkVersion 28
buildToolsVersion "28.0.0"
defaultConfig {
applicationId "asdaadsda"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
参考资料:https://developer.android.com/reference/android/net/wifi/WifiManager#getConfiguredNetworks()
我猜在Android Q及以上版本中,没有办法获取已配置的WiFi网络。唯一的方法是使用getScanResults()
获取当前可用的网络。我知道这并不能解决获取已配置网络名称的问题,而只能获取当前可用的网络。
List<ScanResult> results = null;
TextView outputs = (TextView)findViewById(R.id.outputs);
try{
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
results = wifiManager.getScanResults();
int len = results.size();
String res = null;
for (int i = 0; i < len; i++) {
res = outputs.getText() + "\n" + results.get(i).SSID;
outputs.setText(res);
}
}
catch(Exception e)
{
Log.e("MainActivity",e.getMessage());
}
目前根据他们的文档,他们只提供了触发连接到WiFi网络的机制。希望会有所改善。