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); p.store(out,""); byte[] bytes = bos.toByteArray(); NdefMessage msg = new NdefMessage(NdefRecord.createMime(DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC,bytes)); return msg; } catch (Exception e) { throw new RuntimeException(e); } }}
注意:这是使用最新的Android L Developer Preview.我猜这个功能完全是可能的.
更新:实际释放也是这样.
APK:https://storage.googleapis.com/randy/DeviceOwnerCheck.apk
校验和:FRaAsqdPSjp9nC5hKIU / ElPv e4
结果:使用此URL和此校验和会给出错误,甚至不能访问加密设备屏幕.
我还发布了两个应用程序到GitHub.一个发送NFC数据提供.另一个只是一个应用程序来检查应用程序是设备管理员还是设备所有者.希望有人认为这是有用的.如果您想自己构建DeviceOwnerCheck,则需要修改URL和校验和.
解决方法 哈希码必须是url的安全.这将转换和删除拖尾填充$cat Something.apk | openssl dgst -binary -sha1 | openssl base64 | tr '+/' '-_' | tr -d '='总结
以上是内存溢出为你收集整理的配置Android Lollipop时的校验和错误全部内容,希望文章能够帮你解决配置Android Lollipop时的校验和错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)