2

我有一堆 Android 设备,这些设备将使用自定义 ROM 进行刷新并分发给客户。作为该 ROM 的一部分,将是一个与设备绑定的“支持”应用程序。它无法发布到 Google Play。我需要能够为用户提供下载和安装软件更新版本的机会。我已经检查、下载和安装了已经实现的代码,但是它依赖于被配置为能够安装来自未知来源的应用程序的设备。我需要设备能够下载和安装这个特定的 apk,同时仍然不允许安装来自未知来源的任何其他应用程序。

这可能吗?

(编辑:澄清选择的答案最终如何起作用)

添加到活动的代码是这样的:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() +"/update.apk")), "application/vnd.android.package-archive");
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);

startActivityForResult(intent, 0);

在 android 清单中,添加了以下代码:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

安装应用程序后,我使用根文件资源管理器将 apk 移动/user/apps/system/apps重置手机后,应用程序能够自行安装,而不是提示用户启用不受信任的来源。安装提示,列出应用程序所需的权限并让用户选择安装或不安装仍然出现,但这很好。

4

1 回答 1

2

此方法仅适用于系统应用程序(来源

尝试通过添加和额外的字段来安装 apk。

intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);

从来没有试过这个。文档说你需要调用 startActivityforResult 才能工作。但这需要 API 级别 14。也请尝试

intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);

编辑:再想一想,如果您有自定义 ROM,则将 shareduserid 系统添加到您的安装程序应用程序并直接调用任何PackageInstallerActivity调用来安装应用程序

编辑2:

检查此代码。OnClick 用于安装应用程序,因此将整个代码复制到您的应用程序并添加

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

允许。

并添加到 App 的 Android.mk

 LOCAL_CERTIFICATE := platform
于 2012-09-04T13:10:10.463 回答