1

在 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 配置来获取设备所有者的其他应用程序。两个应用程序中所有请求的权限都是相同的。我们试图获取一些错误信息或设置一些日志,但我们只能得到成功状态。

4

1 回答 1

1

我们终于成功了!该问题是由三个不同的问题引起的:

  1. 我们缺少允许的密钥管理设置WifiConfiguration.KeyMgmt.WPA_EAP

  2. 当企业配置中提供任何域时,我们的测试 RADIUS 服务器会拒绝连接尝试。即使在我们解决 Android 方面的问题时,它也会给我们带来不必要的断开连接

  3. 最重要的是:由于某种原因,我们的密码策略没有被强制执行,并且在测试环境中我们使用自签名证书。如果设备上至少没有设置 PIN 锁,则证书无法附加到网络配置文件,因此无法添加/连接。即使保存了网络,它也缺少必须手动选择的证书(尽管它已正确部署到证书存储区)

于 2020-10-16T18:43:23.253 回答