【发布时间】:2014-10-20 13:51:07
【问题描述】:
我正在尝试使用 NFC 在设备上设置设备所有者包。 Lollipop 概述中提到了 here:
要部署和激活设备所有者,您必须执行 NFC 数据 在设备处于运行状态时从编程应用程序传输到设备 其未配置状态。此数据传输发送相同的信息 如托管配置中所述的配置意图。
原因是一旦设置好,您就可以使用屏幕固定功能将设备锁定在自助服务终端模式。我已经能够通过将 device_owner.xml 文件放置到根设备上的 data/system/ 手动设置设备所有者来测试此 kiosk 模式。
我以前从未使用过 NFC,所以我可能还差得很远,但我根据here 的信息提出了以下 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。
【问题讨论】:
标签: android nfc android-5.0-lollipop device-policy-manager