【问题标题】:OTA updates for Device Owner Android Application(Kiosk mode)Device Owner Android 应用程序的 OTA 更新(Kiosk 模式)
【发布时间】:2015-09-11 13:22:31
【问题描述】:

我可以通过 NFC 制作我的应用程序,即设备所有者应用程序,如 here 所述。现在我想通过无线方式更新我的应用程序,但我找不到 无需 root 的方法。

here 所述,Google 为企业开发应用程序提供了许多选项,但没有提供通过 OTA 更新应用程序的方法。

正在寻找解决方案。

【问题讨论】:

  • Evolve (github.com/VivekPanyam/Evolve) 可能会有所帮助
  • 我已经看到了但无法使用它,而且它处于 alpha 阶段,这可能会导致我们的应用程序崩溃。好像是在运行时更改代码,所以看起来有点复杂。
  • @Shubham 你搞定了吗?
  • @Maragues 2 年前,没有扎根我是不可能做到的。
  • @Shubham 非常感谢,这就是我想的原因。不幸的是,我的客户仍然有很多 4.4.2 设备:(

标签: android nfc updates kiosk-mode device-owner


【解决方案1】:

这只是纯粹的猜测,因为我自己从未尝试过使用包安装程序 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();

我不确定这是否会以静默方式安装您的更新(或者这是否完全符合我的预期)。

【讨论】:

  • @Shubham 如果您尝试这种方法,如果效果符合我的预期(或者如果不是您遇到的问题),我将非常乐意提供反馈。
  • 我无法尝试您的答案,但对 Package Installer 进行了更多研究,发现要提交会话,我们将需要 root 权限。我仍然会尽快尝试并给您反馈。 stackoverflow.com/questions/26884956/…
【解决方案2】:

创建一个服务来后台检查更新。如果更新可用下载 apk 文件并将其写入 sdcard 之类的地方。等待几秒钟以完全刷新。然后调用以下代码来安装你的新 apk。

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);

fileName 是您的新 apk 文件在 sd 卡上的路径。

【讨论】:

  • 我想静默安装。您的方法不会静默安装 apk。这将打开安装 UI,还必须检查设置“允许从未知来源安装”
【解决方案3】:

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

  1. 通过 NFC 提供设备所有者应用程序,就像您已经做的那样。

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

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

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

在配置阶段需要付出相当多的努力,但设备应该会自动接收未来的更新。

【讨论】:

  • 感谢您的回答。我也想过同样的事情,但这需要在设备上设置一个 gmail 帐户,因为该应用程序适用于 KIOSK 模式。
【解决方案4】:

我猜您可能想成为 EMM/MDM 合作伙伴应用程序 - 它类似于设备所有者应用程序,但具有增强的权限和 API。通常,三星/HTC 等 OEM 会为 MDM 合作伙伴应用程序提供隐藏的 API 以升级应用程序。我不确定 Android for Work 是否也提供此 API。

例如:OEM 提供了一个名为 updatePackage(String packageName) 的 api,可以由设备上的 MDM 客户端使用来更新包。您也可以使用此 API 来更新 Device Owner App。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2018-04-26
    • 2011-12-11
    • 1970-01-01
    • 2012-05-08
    • 2014-05-21
    • 2011-08-30
    相关资源
    最近更新 更多