随着API级别26的发布,我的应用程序的核心功能破了,这就是改变了应用程序中用户的热点设置.
要获取和设置此配置,我使用WifiManager隐藏的api:getWifiApConfiguration和setWifiApConfiguration中的以下函数.
Method getWifiApConfiguration = wifiManager.getClass().getMethod("getWifiApConfiguration");
getWifiApConfiguration.invoke(wifiManager);
这适用于Android O之前的设备,但在此版本中我收到以下错误:
App not allowed to read or update stored WiFi Ap config (uid = 10168)
我在清单中声明的权限是:
如何使用最新的API执行此操作?
解决方法:
从Android Oreo(26)开始,新的权限检查被添加到getWifiApConfiguration()方法的服务实现中:
/**
* see {@link WifiManager#getWifiApConfiguration()}
* @return soft access point configuration
* @throws SecurityException if the caller does not have permission to retrieve the softap
* config
*/
@Override
public WifiConfiguration getWifiApConfiguration() {