我正在尝试使用 NFC 在设备上设置设备所有者包。 Lollipop 概述中提到了here:
要部署并激活设备所有者,您必须执行 NFC 数据
当设备处于运行状态时从编程应用程序传输到设备
其未配置状态。此数据传输发送相同的信息
如托管配置中描述的配置意图。
原因是一旦设置完毕,您就可以使用屏幕固定功能将设备锁定在信息亭模式。我已经能够通过将 device_owner.xml 文件放置到 root 设备上的 data/system/ 来手动设置设备所有者来测试此 kiosk 模式。
我以前从未使用过 NFC,所以我可能还很遥远,但我根据信息想出了以下 NdefMessagehere:
Properties properties = new Properties();
properties.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, "com.my.package");
properties.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SSID, "MyWiFiSSID");
properties.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PASSWORD, "WifiPassword");
properties.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM, "C9AD9E082457819B54CF76255A400375E4127112");
properties.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION, "https://dl.dropboxusercontent.com/u/xxx/app-release.apk");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(properties);
byte[] yourBytes = bos.toByteArray();
NdefRecord ndefRecord = NdefRecord.createMime(DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, yourBytes);
NdefMessage msg = new NdefMessage(ndefRecord);
将其发送到我刚刚使用 Lollipop 预览恢复的设备会导致其显示:
哎呀!无法设置您的设备。请联系您的 IT 部门。
它似乎认识到它正在接收提供请求,但我不认为它正在读取我设置的属性,它不会尝试连接 wifi。
看来您需要使用Properties.store
正确创建 NdefRecord 的字节。
Properties properties = new Properties();
properties.setProperty(...);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStream out = new ObjectOutputStream(bos);
properties.store(out, "");
byte[] bytes = bos.toByteArray();
NdefMessage msg = new NdefMessage(NdefRecord.createMime(DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, bytes));
目前,我在下载 APK 时遇到问题且校验和失败。完全不知道为什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)