在Android Q / API 29上列出WiFi网络

时间:2019-08-08 10:30:40

标签: android android-wifi android-10.0

我当前正在将应用程序迁移到AndroidQ。我想列出所有已配置的WiFi网络,并且在Q之前我可以使用WiFiManager中的功能getConfiguredNetworks列出。遗憾的是,此方法在API级别29上已弃用,并在Android Q设备上返回空列表。

不赞成使用的评论仅指我也想连接到这些网络的情况。我不想这样做,我只想列出带有名称的网络并获取其内部id。你有什么想法我应该在Q中这样做吗?

3 个答案:

答案 0 :(得分:0)

我想没有办法在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网络的连接的机制。让我们希望有东西出现

答案 1 :(得分:0)

我遇到了同样的问题,我的问题是我有30个mi targetSdkVersion!并且在API 29中弃用了getConfiguredNetworks函数,当我在android 9或以下版本的设备中运行我的应用程序时,效果很好,但是当我将应用程序运行至android 10中时,函数getConfiguredNetworks返回null或空列表, 我的解决方案是将targetSdkVersion更改为28,像这样

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()

答案 2 :(得分:-3)

dexOptions {
    javaMaxHeapSize "4g"
}

buildTypes {
           buildTypes {
    release {
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
       minifyEnabled true
    }
}