前置背景是系统里面已经安装好了dangs-factory.apk,同时另外在u盘里面会带有一个dangs-factory.apk,我们需要在插入u盘的时候就去获取u盘里面dangs-factory.apk的版本号来和系统已经安装好的对比。我们通过用PackageManager pm = context.getPackageManager(); PackageInfo pkgInfo = pm.getPackageArchiveInfo(/storage/A804-B928/dangs-factory.apk, PackageManager.GET_ACTIVITIES);来获取,这样发现会有拔出u盘后u盘不能卸载的问题
时间: 2024-02-27 14:53:02 浏览: 163
simulacion:模拟四门课程
您的问题是如何解决拔出u盘后u盘不能卸载的问题?
这个问题的原因是获取u盘中apk文件的版本号时,会打开apk文件,导致系统认为u盘中的apk文件正在使用中,从而无法卸载。
解决这个问题的方法是,在获取apk文件版本号之前,先将apk文件复制到系统的临时目录中,然后再打开复制后的文件进行版本号获取。这样即便u盘拔出,也不会影响apk文件的卸载。
具体的实现方法可以参考以下代码:
```
File apkFile = new File("/storage/A804-B928/dangs-factory.apk");
File tmpFile = new File(context.getCacheDir(), apkFile.getName());
try {
FileUtils.copyFile(apkFile, tmpFile);
PackageManager pm = context.getPackageManager();
PackageInfo pkgInfo = pm.getPackageArchiveInfo(tmpFile.getAbsolutePath(), PackageManager.GET_ACTIVITIES);
String version = pkgInfo.versionName;
} catch (Exception e) {
e.printStackTrace();
} finally {
tmpFile.delete();
}
```
这段代码中,我们先将apk文件复制到系统的临时目录中,然后获取版本号后再将临时文件删除,以免占用系统资源。
阅读全文