gpt4 book ai didi

android - 如何在不允许从未知来源安装的情况下将更新推送到预安装的应用程序

转载 作者:行者123 更新时间:2023-11-29 00:36:40 25 4
gpt4 key购买 nike

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

这可能吗?

(编辑:阐明所选答案最终是如何工作的)

添加到 Activity 中的代码是这样的:

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 list 中,添加了以下代码:

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

安装应用程序后,我使用根文件资源管理器将 apk 从 /user/apps 移动到 /system/apps 然后在重置手机后应用程序是能够在自身之上自行安装,而不会提示用户启用不受信任的来源。安装提示列出了应用程序所需的权限并让用户选择安装或不安装,但没关系。

最佳答案

此方法仅适用于系统应用 ( source )

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

intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);

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

intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);

编辑:再想一想,如果你有自定义ROM,那么将shareduserid系统添加到你的安装程序中并直接调用无论 PackageInstallerActivity 调用什么来安装应用

编辑2:

检查这个code . OnClick是用来安装app的,所以把整个代码复制到你的app里面,加上

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

许可。

并在App的Android.mk中添加

 LOCAL_CERTIFICATE := platform

关于android - 如何在不允许从未知来源安装的情况下将更新推送到预安装的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com