在 API lvl 29 之前,我们一直在使用 WifiConfiguration 与我们的 DPC 建立 wifi 连接(设备和配置文件所有者模式)。从 API lvl 29 开始,我们仍然可以保存 Open、WEP、WPA 网络,但任何保存 EAP 网络的尝试都会被完全忽略。我们尝试使用 WifiSuggestions 方法并且建议正确显示在通知栏中,但是当用户点击“允许”时 - 没有任何反应。日志中没有错误,addNetworkSuggestions() 方法返回 STATUS_NETWORK_SUGGESTIONS_SUCCESS。
仅当我们的 DPC 被提供具有完整配置过程的设备/配置文件所有者权限(工作配置文件创建或在第一次启动期间完全管理)时,才会存在此问题。使用 ADB 获取设备所有者状态让我们可以通过允许网络建议来保存网络。
这就是我们设置网络建议的方式:
@RequiresApi(api = Build.VERSION_CODES.Q)
public static WifiNetworkSuggestion setupWifiNetworkSuggestion (WifiConfiguration wifiConfiguration){
return new WifiNetworkSuggestion.Builder()
.setSsid(wifiConfiguration.SSID)
.setIsHiddenSsid(wifiConfiguration.hiddenSSID)
.setWpa2EnterpriseConfig(wifiConfiguration.enterpriseConfig)
.build();
}
之后我们调用:
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
networkSuggestionList.add(setupWifiNetworkSuggestion(wifiConfiguration));
int status = mWifiManager.addNetworkSuggestions(networkSuggestionList);
if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {
_logger.error("Problem adding network suggestion, status code: " + status);
}
我们错过了什么吗?相同的代码适用于我们不使用 EMM 配置来获取设备所有者的其他应用程序。两个应用程序中所有请求的权限都是相同的。我们试图获取一些错误信息或设置一些日志,但我们只能得到成功状态。