需求是这样子的:一个app的新版本要通过另一台手机去检测升级并下载好这个新版本,然后使用局域网将这个apk传输到那台手机上在更新,听着是不是有点蛋疼。那么问题来了,我要怎么知道这个apk文件是新版本呢?
1.先来说说获取自身应用的信息,有了packageInfo就可以获取到很多很多信息就不全部获取了
/**
* 获取自身程序的相应信息
*/
private void getVersion() {
try {
PackageManager packageManager = getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;
Log.d("TAG", "versionCode:" + versionCode);
Log.d("TAG", "versionName:" + versionName);
} catch (Exception e) {
e.printStackTrace();
}
}
2.运行效果
3.获取任意apk的信息,这里我用的是QQ的apk
/**
* 对一个apk文件获取相应的信息
*
* @param path apk路径
*/
private void getApkVersion(String path) {
PackageManager packageManager = getPackageManager();
PackageInfo packageInfo = packageManager.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;
Log.d("TAG", "versionCode:" + versionCode);
Log.d("TAG", "versionName:" + versionName);
}
4.运行效果,看来QQ已经更新几百次了。。。
5.在来说一说versionCode与versionName
- versionCode 1 //对消费者不可见,仅用于应用市场、程序内部识别版本,判断新旧等用途
- versionName “1.0” //展示给消费者,消费者会通过它认知自己安装的版本.