我可以通过NFC here制作我的应用,设备所有者应用。现在我想通过无线方式更新我的应用程序,但我找不到方法没有生根。
Google为企业提供了许多选项来开发应用程序here,但是没有提供通过OTA更新应用程序的方法。
寻找解决方案。
答案 0 :(得分:4)
这只是纯粹的推测,因为我从未尝试过自己使用包安装程序API:
您可以尝试为设备所有者应用设置安装程序包(使用PackageManager.setInstallerPackageName()
)。此安装程序包需要是一个单独的APK,使用与设备所有者APK相同的证书进行签名。
getPackageManager().setInstallerPackage("<device.owner.package.name>", "<installer.package.name>");
从您的安装程序APK,您可以使用PackageInstaller
准备更新:
PackageInstaller pi = getPackageManager().getPackageInstaller();
int sessId = pi.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
PackageInstaller.Session session = pi.openSession(sessId);
OutputStream out = session.openWrite("app");
// .. write updated APK file to out
session.fsync(out);
session.commit(...);
session.close();
我不确定这是否会默默地安装您的更新(或者如果它按照我预期的方式运行)。
答案 1 :(得分:1)
创建服务以进行后台检查以进行更新。如果更新可用的下载apk文件,并写在一些像SD卡的地方。等几秒钟写完全冲洗。然后调用以下代码来安装新的apk。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);
fileName
是sd卡上新apk文件的路径。
答案 2 :(得分:1)
您可以使用Play商店为您的应用提供更新:
通过NFC配置设备所有者应用,就像您已经做过的那样。
在Play商店中提供设备所有者应用的更新版本(相同的包名称,相同的签名,更高的版本号)。
在设备上的Play商店应用中,搜索应用的Play商店版本并安装更新。
在Play商店中激活设备所有者应用的自动更新(在应用的Play商店页面上,点击菜单(三个点)并激活自动更新复选框。
配置阶段需要付出相当大的努力,但设备应自动接收未来的更新。
答案 3 :(得分:0)
我想您可能希望成为EMM / MDM合作伙伴应用程序 - 它类似于设备所有者应用程序,但具有增强的权限和API。通常,像Samsung / HTC这样的OEM为MDM合作伙伴应用程序提供隐藏的API以升级app。我不确定Android for Work是否也提供此api。
例如:OEM提供了一个名为updatePackage(String packageName)的API,设备上的MDM客户端可以使用它来更新软件包。您也可以使用此API更新设备所有者应用程序。