设备所有者Android应用程序的OTA更新(Kiosk模式)

我可以通过NFC制作我的应用程序,设备所有者应用程序,如此处所述。 现在我想通过广播更新我的应用程序,但是我找不到没有生根的方法。

谷歌为企业提供了许多选项来开发这里提到的应用程序,但是没有提供通过OTA更新应用程序的方法。

寻找解决方案。

Solutions Collecting From Web of "设备所有者Android应用程序的OTA更新(Kiosk模式)"

这只是纯粹的推测,因为我从未尝试过自己使用包安装程序API:

您可以尝试为设备所有者应用程序设置安装程序包(使用PackageManager.setInstallerPackageName() )。 此安装程序包需要是一个单独的APK,使用与设备所有者APK相同的证书进行签名。

 getPackageManager().setInstallerPackage("", ""); 

从安装程序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(); 

我不确定这是否会默默地安装您的更新(或者如果它按照我预期的方式工作)。

创建服务以进行后台检查以进行更新。 如果更新可用下载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文件的路径。

您可以使用Play商店为您的应用提供更新:

  1. 正如您已经做的那样,通过NFC配置设备所有者应用程序。

  2. 在Play商店中提供设备所有者应用的更新版本(相同的包名称,相同的签名,更高的版本号)。

  3. 在设备上的Play商店应用中,搜索应用的Play商店版本并安装更新。

  4. 在Play商店中激活设备所有者应用的自动更新(在应用的Play商店页面上,点击菜单(三个点)并激活自动更新checkbox。

这对于配置阶段来说是相当费力的,但设备应该自动接收未来的更新。

我想你可能想成为一个EMM / MDM合作伙伴应用程序 – 它类似于设备所有者应用程序,但具有增强的权限和API。 通常,像三星/ HTC这样的原始设备制造商为MDM合作伙伴应用程序提供隐藏的API以升级应用程序。我不确定Android for Work是否也提供此API。

例如:OEM提供了一个名为updatePackage(String packageName)的API,设备上的MDM客户端可以使用它来更新软件包。您也可以使用此API更新设备所有者应用程序。