Я пытаюсь подготовить свое устройство с помощью NF C и следую руководству, в котором указаны все шаги вместе с параметрами по умолчанию, ссылка следующая:
https://developers.google.com/android/work/play/emm-api/prov-devices#nfc_method
Я могу отправить необходимые настройки, параметры настройки и настройки Wi-Fi, которые мое устройство (устройство без инициализации) может успешно распознать, но мне не удалось отправить токен регистрации, так как он не упомянут в do c как отправить.
Используя предоставленные конфигурации, устройство сначала пытается подключиться к WiFi и загрузить приложение Policy из google play, но не смог прочитать токен регистрации и запросить его предоставление вручную.
Пожалуйста, дайте мне знать, что я делаю неправильно. спасибо:)
код:
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
if (mProvisioningValues == null) {
return null;
}
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Properties properties = new Properties();
// Store all the values into the Properties object
for (Map.Entry<String, String> e : mProvisioningValues.entrySet()) {
if (!TextUtils.isEmpty(e.getValue())) {
String value;
if (e.getKey().equals(DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SSID)) {
// Make sure to surround SSID with double quotes
value = e.getValue();
if (!value.startsWith("\"") || !value.endsWith("\"")) {
value = "\"" + value + "\"";
}
} else //noinspection deprecation
if (e.getKey().equals(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME)
&& Build.VERSION.SDK_INT >= 23) {
continue;
} else {
value = e.getValue();
}
properties.put(e.getKey(), value);
}
}
// Make sure to put local time in the properties. This is necessary on some devices to
// reliably download the device owner APK from an HTTPS connection.
if (!properties.contains(DevicePolicyManager.EXTRA_PROVISIONING_LOCAL_TIME)) {
properties.put(DevicePolicyManager.EXTRA_PROVISIONING_LOCAL_TIME,
String.valueOf(System.currentTimeMillis()));
}
// make sure download link is available
if (!properties.contains(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION)) {
properties.put(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION,
"https://play.google.com/managed/downloadManagingApp?identifier=setup");
}
// make sure to set check sum
if (!properties.contains(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM)) {
properties.put(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM,
"LKJLK3J4KL5J34L5J3J5LJ34K5JL3KJ5");
}
// adding enrolment token
Properties extraBundleProperties = new Properties();
// make sure to set check sum
// if (!extraBundleProperties.contains(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE)) {
// extraBundleProperties.put(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE,
// "ioewurouowueoru");
// }
// properties.put(DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, extraBundleProperties.toString());
properties.put(DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, "{\"android.app.action.PROVISION_MANAGED_DEVICE\":\"ioewurouowueoru\"}");
try {
properties.store(stream, getString(R.string.nfc_comment));
NdefRecord record = NdefRecord.createMime(
DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, stream.toByteArray());
return new NdefMessage(new NdefRecord[]{record});
} catch (IOException e) {
e.printStackTrace();
}
return null;
}