如何检查int是否比另一个int小5?

时间:2017-05-18 04:57:44

标签: android string

我希望我的应用程序检查当前版本代码是否落后于服务器版本的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文件中的版本并读取它。

3 个答案:

答案 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
}