我試圖在使用NFC的設備上設置設備所有者軟件包。將在棒棒堂概述here提到:在Android上使用NFC激活設備所有者棒棒糖
部署和激活設備所有者,您必須在設備處於 其未接通的狀態下執行從編程應用的NFC數據傳輸 到設備。此數據傳輸發送與Managed provisioning中所述的供應意圖相同的信息 。
原因是一旦設置了這個設置,您可以使用屏幕鎖定功能將設備鎖定在自助服務終端模式下。我已經能夠通過將device_owner.xml文件放置到具有根設備上的data/system /來手動設置設備所有者來測試此Kiosk模式。
我從來沒有使用NFC之前,所以我可能是遙遠,但我有以下NdefMessage想出了基於該信息here:
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);
發送這一個設備,我剛纔用棒棒糖恢復預覽使其顯示:
糟糕!無法設置您的設備。請聯繫您的IT部門。
它似乎認識到它正在接收提供請求的事實,但我不認爲它正在讀取我設置的屬性,它不嘗試連接WiFi。
我發佈了自己關於校驗和失敗的問題:http://stackoverflow.com/questions/26509770/provisioning-in-android-lollipop – Randy 2014-10-22 14:23:01