以跳转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) {
}
}