安卓版本更新

以跳转Google play市场为例(需要接口支持,拿到接口返回的版本号)

String versionName=getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0).versionName;//这是获取系统版本号的

//这是获取系统版本号的
更改系统版本号需要在app中的versionName进行手动更改,例如1.0.0

 appVersion = data.getData().getVersion();//appVersion就是拿到接口返回的版本号,接口返回版本号形式为1.0.0
                    int i = Utils.versionCode(versionName, appVersion);
                    if (i == -1) {//版本判断封装在了Utils工具类中
                        new AlertDialog.Builder(getContext()).setTitle("Version UpDate").setMessage("The new version prompts, do you need to update?")
                                .setPositiveButton("Ok", (dialog, which) -> {
                                    dialog.dismiss();//点击确认更新按钮的话就执行版本更新的操作
                                    Utils.rateNow();版本更新也封装在了Utils工具类中
                                }).setNegativeButton("Cancel", (dialog, which) -> {
                            dialog.cancel();
                        }).show();
                    }


Utils工具类中两个方法

//versionName是当前系统版本号  appVersion是接口返回版本号
//返回0就是两个当前版本号和后台版本号一样/返回1是当前版本号大于接口版本号/返回-1是当前版本号小于接口版本号

版本比较

public static int versionCode(String versionName,String appVersion) {
        if (versionName.equals(appVersion)) {
            return 0;
        }
        String[] version1Array = versionName.split("\\.");
        String[] version2Array = appVersion.split("\\.");
        int index = 0;
        // 获取最小长度值
        int minLen = Math.min(version1Array.length, version2Array.length);
        int diff = 0;
        // 循环判断每位的大小
        while (index < minLen
                && (diff = Integer.parseInt(version1Array[index])
                - Integer.parseInt(version2Array[index])) == 0) {
            index++;
        }
        if (diff == 0) {
            // 如果位数不一致,比较多余位数
            for (int i = index; i < version1Array.length; i++) {
                if (Integer.parseInt(version1Array[i]) > 0) {
                    return 1;
                }
            }

            for (int i = index; i < version2Array.length; i++) {
                if (Integer.parseInt(version2Array[i]) > 0) {
                    return -1;
                }
            }
            return 0;
        } else {
            return diff > 0 ? 1 : -1;
        }
    }

版本更新操作

public static void rateNow() {
        try {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("market://details?id=" + MyApplication.getInstance().getPackageName()));
            intent.setPackage("com.android.vending");//这里对应的是谷歌商店,跳转别的商店改成对应的即可
            if (intent.resolveActivity(MyApplication.getInstance().getPackageManager()) != null) {
                MyApplication.getInstance().startActivity(intent);
            } else {//没有应用市场,通过浏览器跳转到Google Play
                Intent intent2 = new Intent(Intent.ACTION_VIEW);
                intent2.setData(Uri.parse("https://play.google.com/store/apps/details?id=" + MyApplication.getInstance().getPackageName()));
                if (intent2.resolveActivity(MyApplication.getInstance().getPackageManager()) != null) {
                    MyApplication.getInstance().startActivity(intent2);
                } else {
                    //没有Google Play 也没有浏览器
                    U.ShowToast("Please install the Google Play first");
                }
            }
        } catch (ActivityNotFoundException activityNotFoundException1) {
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值