-
android:versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户。
-
android:versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显示给用户。
-
可根据app packagename 或者 app name 来进行校验,app 是否已安装。
public static boolean isAppInstalled(Context context,String packagename) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
List<String> pName = new ArrayList<String>();
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
pName.add(pn);
}
}
return pName.contains(packagename);
}
校验App是否需要升级,需要比对VersionCode
public static int getCurVersion(Context context,String packagename) {
int curversion = 0;
try {
// ---get the package info---
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo(packagename, 0);
curversion = pi.versionCode;
if (curversion<= 0) {
return 0;
}
} catch (Exception e) {
if (Constants.DebugMode) {
Log.e("VersionInfo", "Exception", e);
}
}
return curversion;
}
校验完成后,可自动打开安装程序:
public static void install(Context context, String filePath) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}