使用Lollipop,我有一个设备所有者应用程序,该应用程序在提供时安装了NFC。 我现在需要的是处理我的应用程序的自动更新,从Google Play到依赖标准的Android应用程序更新系统......
到目前为止,我可以设想两种方法来完成这项任务,但不知道如何处理它们:
我很高兴听到是否有人可以分享有关此类程序的经验。谢谢阅读!
<小时/> 在
1 - 在NFC配置中,我将apk url替换为 没有运气的话://my.app.packagename;它只是给出一个错误 没有太多解释。
2 - 我用这样一个PlayStore链接替换了这个url: https://play.google.com/store/apps/details?id=my.app.packagename但是 无论我是否在本地使用校验和,它都会出现校验和错误 计算,或在GooglePlay apk详细信息上给出的校验和。它看起来离目标不远,但我无法使其发挥作用。
3 - 最后我回到了我的第一个解决方案,一个自托管的apk 版本1 ...但这次我试图把PlayStore换成新版本 应用程序的第2版具有完全相同的包名...这导致了我 奇怪的事情:
这不是一种奇怪的行为吗?如果有人有关于它的想法,我真的需要能够依赖Play商店的功能,但到目前为止没有运气,我不相信设备所有者应用程序分发与PlayStore不兼容?
以防万一,这里是我正在使用的那种配置代码:
try {
Properties p = new Properties();
p.setProperty(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
"my.app.packagename");
p.setProperty(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION,
"http://www.example.com/myDeviceOwnerApp.apk");
p.setProperty(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM,
"U55o3fO0cXQtUoQCbQEO9c_gKrs");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStream out = new ObjectOutputStream(bos);
p.store(out, "");
final 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);
}
答案 0 :(得分:0)
将您的包名称标记为AAR record。
要确认此功能有效,请使用此app编写标记。
答案 1 :(得分:0)
你需要在
中设置apk的Base64编码SHA1或SHA256(来自M forward)EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
通过NFC进行配置时的字段,否则配置的设备将不接受下载的URL。
另请参阅此answer以正确编码校验和。