ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

android – 从NFC安装位于GooglePlay的应用程序

2019-10-08 07:24:57  阅读:337  来源: 互联网

标签:android google-play android-5-0-lollipop nfc device-owner


与Lollipop合作,我有一个设备所有者应用程序,在安装时安装了NFC.
我现在需要的是处理我的应用程序的自动更新,从Google Play依靠标准的Android应用程序更新系统……

到目前为止,我可以设想两种方法来完成这项工作,但不知道如何处理它们:

>在我的NFC安装常量EXTRA PROVISIONING DEVICE ADMIN PACKAGE中
DOWNLOAD LOCATION直接从Play商店安装应用程序,而不是我自己的开发服务器上的URL.然而
这个常量需要处理apk文件的url,我没有找到任何
官方的方式来直接从Play商店安装apk? (因为它会
将来是一个生产应用程序我对hacks不感兴趣)
>继续从开发服务器安装apk,但然后允许应用程序
与位于Play商店的小弟弟一起更新自己
使用相同的包名称.换句话说:这可以从自定义位置安装v1 apk,然后在PlayStore上放置一个v2 ……让魔法成真吗?

我很高兴听到是否有人可以分享这些程序的经验.谢谢阅读!

在@Stephan Branczyk建议之后编辑我可以做一些更多的测试,这是我做的和结果:

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版具有完全相同的包名…这导致了我
    奇怪的事情:

>起初我的应用程序没有出现在本地PlayStore应用程序的任何地方,
但是当我在Google Play中搜索它时,它显示为绿色
“安装”徽章,它建议我做一个更新……我也是.
>然后,在第一次手动更新后,应用程序在v2中,很好,并且
更好:它似乎列在我的PlayStore中.
>乐观地说,我上传了应用程序的v3 …只是为了看看我的
PlayStore会自动更新我的应用程序(就像所有的一样
其他的),但遗憾的是没有运气:即使我的应用仍然列在
Playstore,并提出“更新”按钮……它永远不会
按其本身更新;我仍然需要手动点击它.

这不是一种奇怪的行为吗?如果有人有关于它的想法,我真的需要能够依赖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);
        }

解决方法:

将您的包名称写为标签中的AAR record.

要确认此功能有效,请使用此app来编写标记.

标签:android,google-play,android-5-0-lollipop,nfc,device-owner
来源: https://codeday.me/bug/20191008/1870828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有