我正在尝试使用NFC在设备上设置设备所有者程序包。此处在“棒棒糖”概述中提到了:
要部署和激活设备所有者,必须在设备处于未配置状态时执行从编程应用到设备的NFC数据传输。此数据传输发送的信息与托管配置中所述的配置意图相同。
原因是,一旦设置了此功能,您就可以使用屏幕固定功能将设备锁定为信息亭模式。通过将device_owner.xml文件放置到根设备上的data / system /中,可以手动设置设备所有者,从而能够测试此信息亭模式。
我以前从未使用过NFC,因此可能会有点遥远,但是我根据此处的信息提出了以下NdefMessage :
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和校验和失败时遇到了问题。完全不确定为什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句