我正在尝试使用NFC在设备上设置设备所有者程序。Lollipop概述(此处)中提到了这一点:
我以前从未使用过NFC,因此我可能偏离了正题,但根据(此处)的信息,我制作了以下基于NdefMessage的代码:
将此发送至我刚刚使用Lollipop预览版恢复的设备会导致它显示:
原因是一旦设置了设备所有者,您就可以使用屏幕固定功能将设备锁定在展示模式下。我已经通过将device_owner.xml文件放置在rooted设备的data/system/目录下来手动设置设备所有者,并成功测试了该展示模式。要部署和激活设备所有者,必须在设备处于未配置状态时从编程应用向设备执行NFC数据传输。此数据传输发送与托管配置中描述的配置意图相同的信息。
我以前从未使用过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。