我们有应用内更新功能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)。
任何帮助,将不胜感激。