我Couldn't use the admin app due to a checksum error. Contact your IT department在使用下面的代码时收到消息.基本上你有两个Android Lollipop设备.一个设备未设置(恢复出厂设置),另一个设备上有此编程应用程序.编程应用程序向未设置的设备发送NFC命令,告诉它使用您传递给它的数据开始配置.根据DevicePolicyManager,需要三个字段(APK位置,APK文件校验和和包名称).MIME_TYPE_PROVISIONING_NFC.
APK正在下载.我正在检查我的服务器日志,它显然来自设备(AndroidDownloadManager在用户代理中).
根据DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM它是文件的SHA-1校验和.校验和不匹配.我已经尝试了许多不同格式的校验和(十六进制,带有空格的十六进制,大写/小写,base64,文本),我想我可能错过了一个测试.
不幸的是,Android Lollipop源代码尚不可用,否则我会在那里查看.
我该如何解决?有什么想法吗?
public class ProvisionerActivity extends Activity implements CreateNdefMessageCallback {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NfcAdapter mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
mNfcAdapter.setNdefPushMessageCallback(this, this);
}
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
try {
Properties p = new Properties();
p.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, "com.example.deviceownertest");
p.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION, "http://example.com/DeviceOwnerTest.apk");
p.setProperty(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM, "19138948d8a607617971af724ffd08dd7eab771b");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStream out = new ObjectOutputStream(bos); …Run Code Online (Sandbox Code Playgroud) 我需要知道如何在Android 5.0,4.4和4.3(?)中将我的应用程序设置为设备所有者.我已经成功地尝试了root设备的方法(在那里描述).我看到它在android 5.0和4.4.2模拟器以及CyanoGen AOSP 4.4.4(所有有根设备)中都很有效.但是我必须在其他非root设备上尝试这个,在Android 5.0 Developer API中你可以读到这个
"要部署和激活设备所有者,您必须在设备处于未设置状态时执行从编程应用程序到设备的NFC数据传输."
但我不明白这意味着什么,或者更好,我要做什么.有人可以帮助我,还是解释我要做的一步?
PS.我知道NFC是什么以及它是如何工作的但是我无法理解如何使用这个问题.