网上找了些关于解析apk安装包的博客:
但是是在非 WEB 项目下运行,但我们公司项目需求是web项目下解析apk安装包信息,然后供其他系统调用时候参考apk是不是需要升级,所有不能够用网络上的代码,和jar包来解析,通过自己改装,基本能满足需求,下面是代码:
特别注意:这里需要一个appt.exe的可执行文件需要放在C:/ 盘下,也可以自己指定目录位置。
ApkInfo.java
package cn.testApk;
/*
* @(#)ApkInfo.java version: 1.0
* Date:2012-1-10
*
* Copyright (c) 2011 CFuture09, Institute of Software,
* Guangdong Ocean University, Zhanjiang, GuangDong, China.
* All rights reserved.
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <B>ApkInfo</B>
* <p>
* 该类封装了一个Apk的信息。包括版本号,支持平台,图标,名称,权限,所需设备特性等。
* </p>
*
* @author CFuture.Geek_Soledad(66704238@51uc.com)
*/
public class ApkInfo {
public static final String APPLICATION_ICON_120 = "application-icon-120";
public static final String APPLICATION_ICON_160 = "application-icon-160";
public static final String APPLICATION_ICON_240 = "application-icon-240";
public static final String APPLICATION_ICON_320 = "application-icon-320";
/**
* apk内部版本号
*/
private String versionCode = null;
/**
* apk外部版本号
*/
private String versionName = null;
/**
* apk的包名
*/
private String packageName = null;
/**
* 支持的android平台最低版本号
*/
private String minSdkVersion = null;
/**
* apk所需要的权限
*/
private List<String> usesPermissions = null;
/**
* 支持的SDK版本。
*/
private String sdkVersion;
/**
* 建议的SDK版本
*/
private String targetSdkVersion;
/**
* 应用程序名
*/
private String applicationLable;
/**
* 各个分辨率下的图标的路径。
*/
private Map<String, String> applicationIcons;
/**
* 程序的图标。
*/
private String applicationIcon;
/**
* 暗指的特性。
*/
private List<ImpliedFeature> impliedFeatures;
/**
* 所需设备特性。
*/
private List<String> features;
public ApkInfo() {
this.usesPermissions = new ArrayList<String>();
this.applicationIcons = new HashMap<String, String>();
this.impliedFeatures = new ArrayList<ImpliedFeature>();
this.features = new ArrayList<String>();
}
/**
* 返回版本代码。
*
* @return 版本代码。
*/
public String getVersionCode() {
return versionCode;
}
/**
* @param versionCode
* the versionCode to set
*/
public void setVersionCode(String versionCode) {
this.versionCode = versionCode;
}
/**
* 返回版本名称。
*
* @return 版本名称。
*/
public String getVersionName() {
return versionName;
}
/**
* @param versionName
* the versionName to set
*/
public void setVersionName(String versionName) {
this.versionName = versionNa