关于Android文件下载路径的坑

来源:互联网 发布:视频音频切割软件 编辑:程序博客网 时间:2024/05/22 18:44

最近做一个项目,对方提出了一个要求要APP能自动检测更新,我当时想APP自动检测更新,这个就是很简单的问题嘛,于是乎我就开始做了。

这个思路都很简单的,无非就是检测本地的版本号和服务器上面的版本好是否一致,如果本地的版本号小于服务器上面的版本,就弹出一个提示框,提示更新。

因为这是我第一个项目,也是第一次做这么一个功能,就上网搜索了一下,不得不说,就这么一个功能,网上有很多的实现方式的,具体可以自行搜索

我选择的是DownloadManager这个方式来实现后台下载的(DownloadManager的具体用法自行搜索),不得不说这个封装DownloadManager非常好用,强烈推荐使用。下载完成发送一条广播,然后弹出界面安装,这样一个非常常规的逻辑。

问题来了,我每次下载完成过后就会提示“解析错误,解析程序包时出现问题”,这就很尴尬了。我刚开始以为是下载不完全成导致了,apk文件错误的,我通过多次调试发现,代码逻辑没有任何问题,apk文件也是完全下载好。这个时候我就把怀疑对象放到了文件路径上面了,我怀疑程序找不到apk文件才会这样报错的

 //指定APK缓存路径和应用名称,可在SD卡/Android/data/包名/file/Download文件夹中查看        request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS, "XXX.apk");

这是我下载的apk路径,没有问题

 intent.setDataAndType(Uri.fromFile(new File(getExternalStorageDirectory()+"/XXX.apk")),                    "application/vnd.android.package-archive");

这是我查找路径apk,问题就出在这里了。/storage/emulated/0/XXX.apk 这就是查找的路径,你们是不是已经发现问题了,我apk不是保存在这个路径下面的,自然就解析出错了。问题找到了,解决方法自然就出来了

intent.setDataAndType(Uri.fromFile(new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/XXX.apk")),                    "application/vnd.android.package-archive");

修改过后的查找路径/storage/emulated/0/Android/data/包名/files/Download,这样就可以了

第一次写博客,如果有错误,欢迎指教!

3 0