进程如下(在平台上测试android api level = 23一个android 6.0手机):
在我的应用中,我这样做:
mWifiManager.addNetwork(wcg);
boolean b = mWifiManager.enableNetwork(wcgID, true);
但是b总是返回false;
日志打印:
Not authorized to remove network
......
Not authorized to update network
然后我在WifiManager中尝试了一个方法(标记为@Hide):
connect(int networkId, ActionListener listener)
通过reflectMethod,结果也失败了。打印为:
java.lang.reflect.InvocationTargetException
答案 0 :(得分:2)
这看起来像是一个合法的案例。
检查所有删除或更新呼叫正在使用的WifiStateMachine代码,尤其是recordUidIfAuthorized
(第454行)。
如果我正确读取此权限,并非所有人都有权修改或删除网络配置。您必须是该配置的所有者(=此配置必须由您的流程首先提交)才能完成工作。
答案 1 :(得分:0)
在Lollipop中你应该尝试检查活动的ssid是否相同,否则禁用网络。
int netId = mWifiManager.addNetwork(conf);
if (netId == -1) {
Log.d(this, "Failed to set the settings for " + mNetworkSsidToConnect);
final List<WifiConfiguration> mWifiConfiguration = mWifiManager.getConfiguredNetworks();
for (int i = 0; i < mWifiConfiguration.size(); i++) {
String configSSID = mWifiConfiguration.get(i).SSID;
Log.d(this, "Config SSID" + configSSID + "Active SSID" + conf.SSID);
netId = mWifiConfiguration.get(i).networkId;
if (configSSID.equals(conf.SSID)) {
Log.d(this, "network id" + netId);
break;
} else {
**/*If SSID is not same disable other network here */**
mWifiManager.disableNetwork(netId);
}
}
}