Android下载管理器完成

2023-11-24

关于安卓下载管理器的小问题。 这是我第一次使用它,并成功下载了多个文件并打开它们。但我的问题是如何检查下载是否完成。

情况是我下载了一个 PDF 文件并打开它,通常该文件很小,在打开之前就完成了。但是,如果文件较大,如何在打开文件之前检查下载管理器是否已完成下载。

我如何下载:

Intent intent = getIntent();
DownloadManager downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
Uri Download_Uri = Uri.parse(intent.getStringExtra("Document_href"));
DownloadManager.Request request = new DownloadManager.Request(Download_Uri);

//Restrict the types of networks over which this download may proceed.
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
//Set whether this download may proceed over a roaming connection.
request.setAllowedOverRoaming(false);
//Set the title of this download, to be displayed in notifications.
request.setTitle(intent.getStringExtra("Document_title"));
//Set the local destination for the downloaded file to a path within the application's external files directory
request.setDestinationInExternalFilesDir(this,Environment.DIRECTORY_DOWNLOADS,intent.getStringExtra("Document_title") + ".pdf");
//Enqueue a new download and same the referenceId
Long downloadReference = downloadManager.enqueue(request);

我如何打开文件

Uri uri = Uri.parse("content://com.app.applicationname/" + "/Download/" + intent.getStringExtra("Document_title") + ".pdf");
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(uri, "application/pdf");
target.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

startActivity(target);

因此,在下载和打开文件之间的某个位置,我想要一个 if 语句来检查它是否应该继续或等待文件。


广播由DownloadManager每当下载完成时,您需要使用适当的意图操作( ACTION_DOWNLOAD_COMPLETE )注册广播接收器来捕获此广播:

注册接收者

registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

和一个 BroadcastReciever 处理程序

BroadcastReceiver onComplete=new BroadcastReceiver() {
    public void onReceive(Context ctxt, Intent intent) {
        // your code
    }
};

您还可以创建AsyncTask来处理大文件的下载

创建某种下载对话框以在通知区域中显示下载并处理文件的打开:

protected void openFile(String fileName) {
    Intent install = new Intent(Intent.ACTION_VIEW);
    install.setDataAndType(Uri.fromFile(new File(fileName)),"MIME-TYPE");
    startActivity(install);
}

您还可以检查示例链接

示例代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android下载管理器完成 的相关文章

随机推荐

  • 迭代字典时如何避免 swift 中的重复键错误

    我正在练习 swift 我正在尝试迭代字典来打印密钥 但它给了我一个 致命错误 字典文字包含重复的键 如何消除错误 let people age 14 age 15 age 75 age 43 age 103 age 87 age 12 f
  • 获取 svg 路径上点的 y 坐标

    我想我需要添加一些解释 我想问这个问题 因为太短的问题不符合质量标准 有趣 所以 问题是 如何获取 svg 路径上特定 x 坐标处点的 y 坐 标 这并不简单 因为一条路径可能有多个具有指定的点x协调 SVG DOM 中没有内置函数可以执行
  • 提取 DOCX 注释

    我是一名教师 我想要一份对我布置的论文发表评论的所有学 生以及他们所说内容的列表 Drive API 的东西对我来说太具有挑战性 但我想我可以将它们下载为 zip 并解析 XML 评论被标记为w comment标签 与w t对于评论文本和
  • 在视图中自动布局“打开”时无法移动 UILabel 的 Y 位置

    我一定在这里遗漏了一些非常明显的东西 但这是一个让我沮丧了好几天的问题 在 xcode 4 5 上的 iOS 项目中 我在 XIB 中有几个标签 一个在另一个之上 在一个UIScrollView占据一个UIView 每个标签与视图一样宽 并
  • 在Python循环中使用迭代器作为变量名

    我一直想知道是否有一种方法可以在 Python 循环中使用迭代器作为变量名 例如 如果我想创建对象v0 v1 v2 有没有办法做这样的事情 for i in range 3 v str i i 2 我知道语法是错误的 但想法应该很清楚 相当
  • 编译32位时出现__int128错误

    c random h 106 error expected unqualified id before int128 当我编译 32 位程序时 上面是我得到的错误 我在用着http sourceforge net projects ming
  • 使用Scala宏生成方法

    我想在 Scala 2 11 中使用注释宏生成方法的别名 我什至不确定这是否可能 如果是 怎么办 示例 鉴于下面的内容 我希望注释宏扩展到 class Socket alias aliases Seq ask read def load n
  • 将 .gz 文件添加到 .zip 存档而不解压并重新压缩?

    假设 gzip 文件和 zip 存档都使用 DEFLATE 由于两者都会为特定文件存储相同的原始压缩数据 是否可以将预压缩的 gz 文件添加到现有的 zip 存档中 一些元数据可能会丢失 或不可用 但我更关心原始文件数据 Yes 我不记得为
  • 将 numpy int16 音频数组转换为 float32

    我有原始二进制 int16 数据 我正在使用它转换为 numpy 数组 audio np fromstring raw data dtype np int16 该数据是音频数据 当我将数据转换为 float32 时 音频变得失真 audio
  • 如何修复 由于目标计算机主动拒绝而无法建立连接 127.0.0.1:64527

    我有一个 MVC 应用程序 它依赖于 Web API 应用程序 我将这两个应用程序托管在共享托管环境上 子域上的 API 和主域上的 MVC API 是 api mydomain com MVC 是 mydomain com 每当我在邮递员
  • 如何从进程内部确定 CPU 和内存消耗

    我曾经承担过从正在运行的应用程序内部确定以下性能参数的任务 可用虚拟内存总量 当前使用的虚拟内存 Virtual memory currently used by my process 可用内存总量 当前使用的内存 RAM currentl
  • 在 VBA 中连接字符串

    我正在维护一个使用 VBA 用 Microsoft Access 编写的应用程序 我浏览了一下我的代码 刚刚注意到我下意识地使用加号 而不是与符号将字符串连接在一起 我已经有几年没有用 VB6 编写代码了 这会导致任何问题吗 一切看起来都很
  • 如何在 Visual Studio 2008 中创建 COM DLL?

    我已经很久没有编写 COM dll 了 我现在已经创建了几个类 它们继承了一些 COM 接口 但我想对其进行测试 我知道我必须在某处放置一个 GUID 然后使用 regsvr32 注册它 但是涉及哪些步骤 编辑 抱歉 忘了提及我正在使用 C
  • 如何将图像插入 OpenXML Word 文档的页眉?

    我的 OpenXML Word 文档生成项目需要文本 表格和图像 但首先 我需要一个带有徽标 图像 的文档标题 我使用了 Microsoft 示例来创建页眉和页脚 网址为使用 Open XML SDK 2 0 for Microsoft O
  • 为什么在某些条件下 AppDomain.CurrentDomain.GetAssemblies() 不返回 Global.asax 中的依赖程序集?

    EDIT 以前的标题是 IIS 重新启动和应用程序初始化之间的应用程序初始化行为不同 我更改了标题以将问题从 IIS 应用程序初始化中扩展出来 因为观察到的行为与AppDomain CurrentDomain GetAssemblies 我
  • 使用自定义 UITableViewCell 自动布局

    如何使用自动布局来移动自定义 UITableViewCell 的内容并调整其大小 为了使问题更清楚 我分配了contentView我的自定义单元格具有浅灰色背景颜色 为了将这个问题尽可能减少到最小 我的自定义单元只有一个UIImageVie
  • OpenCV中SimpleBlobDetector的minRepeatability参数有什么用?

    有一个minRepeatability参数输入SimpleBlobDetector在 OpenCV 中 这个参数有什么用 如果我将其从 1 更改为 20 它将如何影响斑点检测 相关代码在斑点检测 c The detect函数 唯一一个使用m
  • Hibernate:MySQLDialect 和 MySQLInnoDBDialect 之间有什么区别?

    MySQLDialect 和 MySQLInnoDBDialect 有什么区别 从那时起我就使用了 MySQLDialect 现在我想知道上面的有什么不同 Anyone MySQL默认的存储引擎是MyISAM 如果您需要事务和行级锁定 您通
  • React Router v4默认页面(未找到页面)

    这是常见的目的 将不匹配的请求定向到未找到的页面 用react router v4做这个看起来像以前的版本 我期望这个 下面是示例作品 链接工作正常 但我希望 NotFound 组件仅调用未知的 url 请求 但它总是在那里 import
  • Android下载管理器完成

    关于安卓下载管理器的小问题 这是我第一次使用它 并成功下载了多个文件并打开它们 但我的问题是如何检查下载是否完成 情况是我下载了一个 PDF 文件并打开它 通常该文件很小 在打开之前就完成了 但是 如果文件较大 如何在打开文件之前检查下载管