gpt4 book ai didi

android - 在 Android 4.2+ 上使用 intent 安装 apk 时启用降级

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:06 25 4
gpt4 key购买 nike

在 Android 4.2+ 上使用 intent 安装 apk 时是否可以启用降级?我发现这是可能的,当通过命令 shell 安装应用程序时(使用 -d)adb install -r -d <link to apk> ,所以我希望它也可以通过 Intent 以某种方式实现。我正在寻找一些标志或其他东西,但我没有找到任何有用的东西。

这是我打开包安装程序的 Intent :

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri applicatonFileUri = Uri.fromFile(applicationFile);
intent.setDataAndType(applicatonFileUri, PACKAGE_TYPE);
startActivity(intent);

最佳答案

这对于非平台(第 3 方)应用程序是不可能的:您必须直接向 PackageManager 进行安装请求 .

PackageManager 有非公开的 API,installPackage() (撰写本文时的第 2584 行):

/**
* @hide
*
* Install a package. Since this may take a little while, the result will
* be posted back to the given observer. An installation will fail if the calling context
* lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the
* package named in the package file's manifest is already installed, or if there's no space
* available on the device.
*
* @param packageURI The location of the package file to install. This can be a 'file:' or a
* 'content:' URI.
* @param observer An observer callback to get notified when the package installation is
* complete. {@link IPackageInstallObserver#packageInstalled(String, int)} will be
* called when that happens. observer may be null to indicate that no callback is desired.
* @param flags - possible values: {@link #INSTALL_FORWARD_LOCK},
* {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
* @param installerPackageName Optional package name of the application that is performing the
* installation. This identifies which market the package came from.
*/
public abstract void installPackage(
Uri packageURI, IPackageInstallObserver observer, int flags,
String installerPackageName);

其中一个可能的标志是 INSTALL_ALLOW_DOWNGRADE:

/**
* Flag parameter for {@link #installPackage} to indicate that it is okay
* to install an update to an app where the newly installed app has a lower
* version code than the currently installed app.
*
* @hide
*/
public static final int INSTALL_ALLOW_DOWNGRADE = 0x00000080;

所有这些 API 都是隐藏的,第三方应用无法访问。现在,您可以尝试反射,但我非常肯定平台无论如何都会限制对它们的访问。

关于android - 在 Android 4.2+ 上使用 intent 安装 apk 时启用降级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522122/

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