1

我想在没有用户干预的情况下在 Android 上安装应用程序。我正在使用权限INSTALL_PACKAGES,并且正在“/download/”文件夹中安装应用程序。下载完成后,会出现一个对话框,要求我安装该应用程序。如何隐藏此对话框并在没有用户干预的情况下安装应用程序?

4

3 回答 3

4

对不起,你不能。Android 框架不允许您这样做。Android 对安全目的有一些限制,不要试图打破它。

于 2012-06-20T12:28:27.800 回答
0

INSTALL_PACKAGES 权限仅允许安装在 /system/app 中的系统应用程序。

对于其他应用程序,这是不可能的。

于 2013-02-17T10:18:33.593 回答
0

您可以通过反射使用隐藏的 API android.content.pm.IPackageInstallObserver :

public class PackageManagement {
public static final int INSTALL_REPLACE_EXISTING = 0x00000002;
public static final int INSTALL_SUCCEEDED = 1;

private static Method installPackageMethod;
private static Method deletePackageMethod;


static {
    try {
        installPackageMethod = PackageManager.class.getMethod("installPackage", Uri.class, IPackageInstallObserver.class, Integer.TYPE, String.class);
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    }
}


public static void installPackage(PackageManager pm, Uri mPackageUri, IPackageInstallObserver observer, int installFlags, String installerPackageName) {
    try {
        installPackageMethod.invoke(pm, mPackageUri, observer, installFlags, installerPackageName);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

将 android.content.pm.IPackageInstallObserver 导入您的项目。您的应用程序必须是系统的。您必须在清单中激活权限 android.permission.INSTALL_PACKAGES

于 2014-11-27T13:26:45.840 回答