gpt4 book ai didi

android - 在android中以编程方式安装新版本时获取应用程序的先前版本代码?

转载 作者:行者123 更新时间:2023-12-05 00:01:28 26 4
gpt4 key购买 nike

我想在安装新版本的应用程序时获取该应用程序的先前版本代码。

我尝试了什么:

我已经实现了以下类,它将在安装新版本时运行。但是我只能得到新的版本代码。

 public class VersionContraller extends BroadcastReceiver {  

@Override public void onReceive(Context context, Intent intent) {

if(Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())) {

if(intent.getData().getSchemeSpecificPart().equals(context.getPackageName())) {


try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
int newVersion=pInfo.versionCode;
//I want to do some logic hear with older and new version of the application
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
}
}

如何在上面的类中获取以前版本的应用程序?

最佳答案

AFAIK 你不能很轻松地做到这一点。您可以在代码中使用 SharedPreferences,如下所示:

String newVersion;
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
int intVersion = pInfo.versionCode;
newVersion = "" + intVersion;
} catch (NameNotFoundException e) {
// Put a version you want if exception is launched
newVersion = "something you want";
e.printStackTrace();
}
SharedPreferences sharedPrefs = this.getSharedPreferences("your.package.app", Context.MODE_PRIVATE);
String savedVersion = "your.package.app.savedVersion";
String versionOnSP = sharedPrefs.getString(savedVersion, "previous");
if (versionOnSP.equalsIgnoreCase("previous") && newVersion.equalsIgnoreCase("versionTarget")) {
// Your version is old; do some logic here with older version of the application
...
} else {
// Your version is new, do whatever you want
}
// After that, save your current version
sharedPrefs.edit().putString(savedVersion, newVersion).commit();

这样,在更新后的第一次启动时,您将能够执行一些操作,因为您没有在以前版本的 SharedPreferences 上保存版本

但是它不是100%安全,因为用户可以删除您应用的数据,并且在重新启动应用后您将直接进入first if。也许我的想法需要改进。

编辑(在 bgse 评论之后)

我的代码必须放在第一个if:

public class VersionContraller extends BroadcastReceiver {  
@Override public void onReceive(Context context, Intent intent) {
if(Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())) {
// My code here
}
}
}

关于android - 在android中以编程方式安装新版本时获取应用程序的先前版本代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263548/

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