1

我们有应用内更新功能installPackage()PackageManager用于安装应用的新更新。

这在大多数情况下都有效。但有时我们面临的问题是应用程序版本发生了变化,但应用程序 UI 和代码没有发生变化。我可以看到应用程序版本从 API 请求更新,但 UI 没有改变,API 请求与旧版本相同。

public UpdateManager(Context context) throws SecurityException, NoSuchMethodException {

        observer = new PackageInstallObserver();
        pm = context.getPackageManager();

        Class<?>[] types = new Class[]{Uri.class, IPackageInstallObserver.class, int.class, String.class};
        method = pm.getClass().getMethod("installPackage", types);
    }

public void installPackage(File apkFile) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        if (!apkFile.exists()) throw new IllegalArgumentException();
        Uri packageURI = Uri.fromFile(apkFile);
        installPackage(packageURI);
    }

public void installPackage(Uri apkFile) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        method.invoke(pm, new Object[]{apkFile, observer, INSTALL_REPLACE_EXISTING, null});
    }

此应用具有系统权限 (INSTALL_PACKAGES)。

任何帮助,将不胜感激。

4

0 回答 0