标签:
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); }
标签:
原文地址:http://my.oschina.net/leov1/blog/497418