如何将已安装的应用程序版本代码与当前版本代码(新)进行比较



我想通知用户他可以升级应用程序版本。为此,我需要将已安装的应用程序版本代码与当前版本代码进行比较。

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
version = pInfo.versionCode;
  • Q1.我在version中得到了哪个版本,是已安装的还是当前的(新的)?

  • Q2.如果version有电流,我该如何安装?

  • Q3.如果version已经安装,我如何才能获得电流

我可以建议你一种方法。

  • 您的清单文件中有一个版本代码。假设在您的第一个版本中,您将其设置为1
  • 在启动代码中,将该值保存在sharedPreference中
  • 不要在某些服务器中保存文本文件(可能您可以使用应用程序点来实现此目的)。在这个文件中保留一个字段作为版本代码
  • 每次更新时,都要像在清单文件中那样增加该文件中的版本代码

  • 每次启动应用程序时,您都可以从服务器读取文件,进行json解析并获取版本代码。

  • 然后将此值与共享的Freference版本代码进行比较。若相同,则表示没有更新。如果新版本代码更高,那么弹出一个带有谷歌播放链接的对话框。同时更新您的共享首选项。

  • 你可以每3天检查一次版本代码值,可能是在应用程序启动时,而不是每次都签入,因为它只需要很少的数据下载和一些处理。

我用这种方式,它对我有效。

如果需要进一步澄清,请告诉我。

试试这可能会对您有所帮助

public void printDeviceConfig(Context context) {

        try {
            System.err.println("=============== HEAP INFO ===============================");
            ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
            MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
            activityManager.getMemoryInfo(memoryInfo);
            System.err.println("Over All Memory: " + (memoryInfo.availMem / 1024) + " KB");
            System.err.println("low Memory: " + memoryInfo.lowMemory);
            System.err.println("Threshold Memory: " + (memoryInfo.threshold / 1024) + " KB");
            System.err.println("=============== OS INFO ===============================");
            System.err.println("Device MODEL: " + android.os.Build.MODEL);
            System.err.println("VERSION RELEASE: " + android.os.Build.VERSION.RELEASE);
            System.err.println("VERSION SDK: " + android.os.Build.VERSION.SDK_INT);
            System.err.println("=============== Device Information ===============================");
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            System.err.println("Device Resolution (WxH)= " + dm.widthPixels + " x " + dm.heightPixels);
            System.err.println("Density DPI= " + dm.densityDpi);
        } catch (Throwable e) {
            e.printStackTrace();
            StringWriter stackTrace = new StringWriter();
            e.printStackTrace(new PrintWriter(stackTrace));
        }

    }

最新更新