我希望我的应用程序检查当前版本代码是否落后于服务器版本的5+版本。
如果当前版本代码为100
且服务器上的版本代码为105
或更高,则应显示“应用已淘汰”状态。但问题是,它总是显示这个吐司,我服务器上的代码是104
。
if (updateVersionCode >= info.versionCode - 5) {
Toast.makeText(context, "force update, app is 5 versions behind!", Toast.LENGTH_LONG)
.show();
} else {
//not obsolete
}
这是我的极客的完整代码 -
public static void compareVersions(Context context) {
// 1) get local apk version code
PackageManager manager = context.getPackageManager();
PackageInfo info = null;
try {
info = manager.getPackageInfo(context.getPackageName(), 0);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 2) get version code from downloaded .txt file
int updateVersionCode = info.versionCode;
try {
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard, "ver.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
if ((line = br.readLine()) != null) {
updateVersionCode = Integer.parseInt(line);
}
br.close();
} catch (Exception e) {
// Handle errors!
}
// 3) compare Versions
if (updateVersionCode > info.versionCode) {
// download apk file
context.startService(new Intent(context,
NSOMUHDownloadApkService.class));
Toast.makeText(context, "updates are available", Toast.LENGTH_LONG)
.show();
} else {
Toast.makeText(context, "up to date!", Toast.LENGTH_LONG).show();
}
if (updateVersionCode >= info.versionCode - 5) {
Toast.makeText(context, "force update, app is 5 versions behind!", Toast.LENGTH_LONG)
.show();
} else {
//not obsolete
}
}
PS:它从服务器下载.txt文件中的版本并读取它。
答案 0 :(得分:1)
您正在减去应该添加的位置。将您的比较更改为:
if (updateVersionCode >= info.versionCode + 5) {
答案 1 :(得分:1)
你在比较中翻了你的牌子。您测试新版本是否大于当前版本减去5,并且应始终为true。尝试:
if (updateVersionCode >= info.versionCode + 5)
作为你的条件。
答案 2 :(得分:1)
使用临时变量尝试以下逻辑。
int temp=(updateVersionCode -info.versionCode);
if ((temp>0 && temp==5) {
Toast.makeText(context, "force update, app is 5 versions behind!", Toast.LENGTH_LONG)
.show();
} else {
//not obsolete
}