版本管理器VersionManager

本文深入解析了一个版本管理器类的实现细节,包括如何获取旧版本号与版本名称,以及如何判断当前版本是否发生变化。通过使用SharedPreferences持久化版本信息,确保了应用在升级过程中能够准确记录并比较版本差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package me.xiaopan.android.content.pm;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.preference.PreferenceManager;

/**
 * 版本管理器
 */
public class VersionManager {
    /**
     * - 旧的版本号
     */
    public static final String PREFERENCES_KEY_OLD_VERSION_CODE = "PREFERENCES_KEY_OLD_VERSION_CODE";
    /**
     * - 旧的版本名称
     */
    public static final String PREFERENCES_KEY_OLD_VERSION_NAME = "PREFERENCES_KEY_OLD_VERSION_NAME";

    private PackageInfo packageInfo;
    private SharedPreferences sharedPreferences;

    public VersionManager(Context context, SharedPreferences sharedPreferences){
        try {
            this.packageInfo = context.getPackageManager() != null?context.getPackageManager().getPackageInfo(context.getPackageName(), 0):null;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
        this.sharedPreferences = sharedPreferences;
    }

    public VersionManager(Context context){
        this(context, PreferenceManager.getDefaultSharedPreferences(context));
    }

   /**
    * 获取旧的版本号
    * @return 旧的版本号
    */
   public int getOldVersionCode(){
      return sharedPreferences.getInt(PREFERENCES_KEY_OLD_VERSION_CODE, -1);
   }

    /**
     * 获取旧的版本名称
     * @return 旧的版本名称
     */
    public String getOldVersionName(){
        return sharedPreferences.getString(PREFERENCES_KEY_OLD_VERSION_NAME, null);
    }

    /**
     * 比较之前安装的版本和当前的版本是否一样
     * @return true:一样;false:不一样
     */
    public boolean isChange(){
        int oldVersion = getOldVersionCode();
        return oldVersion == -1 || oldVersion != packageInfo.versionCode;
    }

    /**
     * 更新旧的版本
     */
    public void updateOldVersion(){
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt(PREFERENCES_KEY_OLD_VERSION_CODE, packageInfo.versionCode);
        editor.putString(PREFERENCES_KEY_OLD_VERSION_NAME, packageInfo.versionName);
        editor.commit();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值