首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android DownloadManager获取文件名

Android DownloadManager获取文件名
EN

Stack Overflow用户
提问于 2012-11-10 20:18:45
回答 4查看 22.1K关注 0票数 26

在我的应用程序中,你可以下载一些文件。我使用Android的DownloadManager类进行下载。下载完成后,它应该会显示一条消息,告诉我文件已下载。问题是,同时可能有2,3或4次下载。我的BroadcastReceiver代码如下所示:

代码语言:javascript
复制
receiver_complete = new BroadcastReceiver(){
         @Override
          public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
                if (action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE) ){
                    Toast.makeText(MainActivity.this, MainActivity.this.getString(R.string.download_finished, "Here should be the name", Toast.LENGTH_SHORT).show();
                }
         }
     };

如何获取已完成下载的当前文件名?

非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-10 21:03:28

我想你应该把类似这样的东西放到你的if代码块中。用您的DownloadManager实例替换YOUR_DM

代码语言:javascript
复制
Bundle extras = intent.getExtras();
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID));
Cursor c = YOUR_DM.query(q);

if (c.moveToFirst()) {
    int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
    if (status == DownloadManager.STATUS_SUCCESSFUL) {
        // process download
        title = c.getString(c.getColumnIndex(DownloadManager.COLUMN_TITLE));
        // get other required data by changing the constant passed to getColumnIndex
    }
}
票数 21
EN

Stack Overflow用户

发布于 2012-11-10 20:32:49

我想你要找的是DownloadManager.COLUMN_TITLE

以下是安卓文档的链接:http://developer.android.com/reference/android/app/DownloadManager.html#COLUMN_TITLE

这里有一个教程,它将解释更多的不仅仅是获得标题。它用于从URL下载图像,然后将其显示在应用程序中。总的来说,我认为非常有用。

http://wptrafficanalyzer.in/blog/downloading-an-image-from-an-http-url-using-downloadmanager-and-displaying-in-imageview-by-dynamically-registered-broadcastreceiver/

票数 1
EN

Stack Overflow用户

发布于 2019-06-21 02:16:17

有一种更简单的方法来检索下载的文件URI,那就是使用getUriForDownloadedFile

代码语言:javascript
复制
download_receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle b = intent.getExtras();
        DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
        long file_id = b.getLong(DownloadManager.EXTRA_DOWNLOAD_ID);
        Uri uri = dm.getUriForDownloadedFile(downloaded_file_id);

    }
}

我在关于如何使用BroadcastReceiver处理DOWNLOAD_COMPLETE事件的完整描述中找到了这个方法here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13321984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档