使用 WifiManager 打开 wifi 停止在 Android 10 上工作

Ade*_*erg 5 android wifimanager android-10.0

我有以下代码在 Android 10 之前运行良好。但它无法在 Android 10 设备中打开 wifi。

WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
boolean res = wifiMgr.setWifiEnabled(true);
//res value is set to false above because setWifiEnabled returns false on Android 10
Run Code Online (Sandbox Code Playgroud)

以下是我的权限 AndroidManifest.xml

<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>
<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>
<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>
<uses-permission android:name=\"android.permission.INTERNET\"/>
<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>
Run Code Online (Sandbox Code Playgroud)

我什至动态请求这些权限。但这似乎也无济于事。

问:
Android 10 有什么变化吗?我应该做更多的事情来从我的应用程序以编程方式打开 wifi 吗?

Jak*_*ain 6

public boolean setWifiEnabled(启用布尔值)

此方法在 API 级别 29 中已弃用。从 Build.VERSION_CODES#Q 开始,不允许应用程序启用/禁用 Wi-Fi。

兼容性说明:对于以 Build.VERSION_CODES.Q 或更高版本为目标的应用程序,此 API 将始终返回 false 且无效。

如果应用面向较旧的 SDK(Build.VERSION_CODES.P 或更低版本),则它们可以继续使用此 API。

根据文档,Apps将无法Wi-Fi OFF/ON再从Android-10 API level 29[直到谷歌提供替代解决方案]转向。

有关更多信息,请参阅官方文档

并且在 google 中创建了一个问题 128554616issuetracker