在Android 4.2中,当使用intent以编程方式安装APK时,如何允许降级?

在Android 4.2中,当使用intent以编程方式安装APK时,如何允许降级?,android,android-intent,installation,apk,android-4.2-jelly-bean,Android,Android Intent,Installation,Apk,Android 4.2 Jelly Bean,从4.2开始,使用以下代码安装APK,如果APK版本低于当前安装的版本,安装将失败。是否有允许降级的PutExtra() File file = new File(dir, "App.apk"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startActivity(int

从4.2开始,使用以下代码安装APK,如果APK版本低于当前安装的版本,安装将失败。是否有允许降级的PutExtra()

File file = new File(dir, "App.apk");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);

或者我需要用另一种方式吗?

好的,允许降级是指正在安装的应用程序的功能,如果此应用程序允许降级,它将降级当前安装的应用程序,否则您不能

因此,从你的意图来看,你无法控制它

可以在应用程序中设置的设置

此属性可以在清单中设置


至少使用相同的版本名/versioncode,可以按照额外的目的工作 (对于我(Android 4.2.2,Galaxy S4处于活动状态):


在我的情况下,这会在更换应用程序后重新启动应用程序。

我不知道有什么方法可以支持降级,除非卸载应用程序,或者通过
adb安装(针对开发人员)。即使使用adb,我也从未成功降级已安装的应用:-/我知道的唯一解决方案是先卸载该应用。这也是非常合理的,因为私有设置和持久数据布局可能会随着版本的变化而变化。较旧版本的应用不太可能应对较新版本中的数据更改。从com使用pm时mand line在4.2中有a-d选项允许降级。我想在从我的应用程序启动安装时做同样的事情。如果这让您的企业客户和我的客户一样不满意,请在这里指出问题:我使用的是android的Mono,所以“恢复需要应用程序”选项在IDE中不存在。但是将android:restoreAnyVersion=“true”添加到androidmanifest.xml中的部分并不能解决android 4.2中的问题。清单中是否还有其他选项需要?
Uri uri = Uri.fromFile(new File(PATH_TO_FILE_APK));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra('Intent.ACTION_PACKAGE_REPLACED', "your.package.name");
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);