需求

当在异常网络下进行 APK 包下载时,会导致下载几 KB 的 APK 包,随机进入安装会显示“解析错误”的提示。为此,特意增加验证判断:

通过PackageManager获取本地 APK 安装包的PackageInfo, 跟客户端下载的信息进行对比,就可以解决这次的包异常的问题。

PackageManager

PackageManager:用于管理安装的apk和未安装的apk的类。

getPackageArchiveInfo

PackageInfo

PackageInfo:对应AndroidManifest.xml中包的所有信息。

常见字段:

public String packageName;包名

public String[] splitNames;

public int versionCode;版本号

public String versionName;版本名称

public ApplicationInfo applicationInfo;

public long firstInstallTime;第一次安装时间

public long lastUpdateTime;上次更新时间

public ActivityInfo[] activities;所有的Activity信息

public ActivityInfo[] receivers; 所有的广播接收者

public ServiceInfo[] services;所有的服务信息

public ProviderInfo[] providers;获取ContentProvide

public PermissionInfo[] permissions;所有的权限信息

代码

public boolean getAPKPackageInfo(String path) {

// 获取PackageManagerAPK的信息

try {

PackageManager packageManager = mActivity.getPackageManager();

PackageInfo packageInfo = packageManager

.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);

if (U.notNull(packageInfo) && packageInfo.versionName

.equals(getUpdateInfo().newVersionName)) {

return true;

}

} catch (Throwable ignore) {

}

return false;

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐