使用Android DownloadManager,我如何获得文件名?

时间:2015-11-24 06:10:02

标签: android android-download-manager

我使用DownloadManager类管理下载,我使用此

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,subPath);

目前我将subPath设置为某​​个文件名,但如何从url获取文件名?

我不想使用光标,但有些方法可以从uri中提取文件名。

2 个答案:

答案 0 :(得分:0)

您可以使用:

get('story.json').then(function(response) {
     console.log("Success!", response);
    return get('b.json');
   }, function(error) {
   console.error("Failed!", error);
}).then(function(res){
 // response for b
});

请查看Android DownloadManager get filename

希望这有帮助!

答案 1 :(得分:0)

好吧,如果没有光标,那么试试这个:

class GetFileName extends AsyncTask<String, Integer, String>
{
protected String doInBackground(String... urls)
{
    URL url;
    String filename = null;
    try {
        url = new URL(urls[0]);
        String cookie = CookieManager.getInstance().getCookie(urls[0]);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("Cookie", cookie);
        con.setRequestMethod("HEAD");
        con.setInstanceFollowRedirects(false);
        con.connect();

        String content = con.getHeaderField("Content-Disposition");
        String contentSplit[] = content.split("filename=");
        filename = contentSplit[1].replace("filename=", "").replace("\"", "").trim();
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    } catch (IOException e) {
    }
    return filename;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {

}
}