我正在开发 MDM/EMM 应用程序,这需要我修改/绕过默认的 google 设置向导来配置设备(如果它在我们的服务器上注册)。
我的逻辑如下:-
1 - 在 ROM 中添加 MDM apk 作为系统应用程序
2 - 在 google 设置向导之前启动我的应用程序的活动,以检查设备是否已在我的服务器上注册。
3 - 如果注册我们会配置设备,否则我们会关闭我们的活动并允许谷歌设置向导继续
这种方法面临的问题 -
在实施基于 WiFi 的检查期间,我们遇到了困难——为了检查注册,我们必须强制用户连接到互联网。
但在 WiFi 扫描期间,所有设备上的结果都是空的。设置向导完成后运行相同的 WiFi 扫描代码。
在 Google 设置向导完成之前,是否有一种特殊的方式来扫描 WiFi?
我使用的代码如下: -
final BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent intent) {
if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
List<ScanResult> mScanResults = mWifiManager.getScanResults();
// this returns an empty list when run before the google setup wizard
}
}
};
mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mWifiManager.setWifiEnabled(true);
getApplicationContext().registerReceiver(wifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mWifiManager.startScan();
遗憾的是,“mWifiManager.getScanResults()”在 Google 设置向导完成之前运行时会返回一个空列表。在 google 设置向导完成后,此相同的代码将返回所有可用的 WiFi 列表。
如果谷歌设置完成,我们无法配置设备,因此必须在此之前进行配置检查:(