在写一个Android应用,需求也很简单就是通过接收JSON发送的数据进行解释获取URL的地址,然后根据这个地址把其文件下载。一下开始想用okhttp通过GET来下载问题,但问题是okhttp考虑得比较多也很完善(断线续传等);但这些我没必要也不需要这么复杂啊,那好吧简单点。就使用安卓自带的DownloadManager进行下载,不过用DownloadManager下载必须要满足API level 9以上,好在我的项目满足了,那就用呗,四行代码搞掂。
代码语言:javascript复制DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL));
request.setDestinationInExternalPublicDir(fileDir, fileName);
DownloadManager downloadManager = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);
downloadManager.enqueue(request);
也够清真的,那下载的问题解决了,但发现下载的文件名不是地址提供的文件名,好吧,最后用回地址给的文件名,这样方便管理和更新,于是又弄了一个提取文件名的函数。
代码语言:javascript复制public String GetFileName(String URL){
int start=URL.lastIndexOf("/");
int end=URL.lastIndexOf(".");
if(start!=-1 && end!=-1){
return pathandname.substring(start 1,end);
}else{
return null;
}
}
具体怎么处理就不详说了,反正核心也就是2行。。
有同学私信我,说提取文件名的函数没有带后缀,,那好吧,上个可以获得后缀的。
代码语言:javascript复制public String getFileName(String urlname) {
int start = urlname.lastIndexOf("/");
int end = urlname.length();
if (start != -1 && end != -1) {
return urlname.substring(start 1,end);
} else {
return null;
}
}
最后说说okhttp的确是一个很优秀清真的http框架,很多没想到或想到都已经处理得很好了。。
-完-