是否可以在 Android 上使用 volley 下载任何文件(pdf 或 zip)?

2024-04-16

如何使用 android volley 下载 pdf 文件或 zip 文件。使用字符串、JSON、图像或视频很容易工作。 其他文件呢?


首先,您必须创建自己的自定义请求类,例如

class InputStreamVolleyRequest extends Request<byte[]> {
private final Response.Listener<byte[]> mListener;
private Map<String, String> mParams;

//create a static map for directly accessing headers
public Map<String, String> responseHeaders ;

public InputStreamVolleyRequest(int method, String mUrl ,Response.Listener<byte[]> listener,
                                Response.ErrorListener errorListener, HashMap<String, String> params) {
  // TODO Auto-generated constructor stub

    super(method, mUrl, errorListener);
     // this request would never use cache.
     setShouldCache(false);
     mListener = listener;
     mParams=params;
}

@Override
protected Map<String, String> getParams()
     throws com.android.volley.AuthFailureError {
  return mParams;
};


@Override
protected void deliverResponse(byte[] response) {
    mListener.onResponse(response);
}

@Override
protected Response<byte[]> parseNetworkResponse(NetworkResponse response) {

    //Initialise local responseHeaders map with response headers received
    responseHeaders = response.headers;

    //Pass the response data here
    return Response.success( response.data, HttpHeaderParser.parseCacheHeaders(response));
}
}

现在只需使用 Request.Method.GET 和要下载文件的 URL 通过自定义类发送请求即可。

String mUrl= <YOUR_URL>;
InputStreamVolleyRequest request = new     InputStreamVolleyRequest(Request.Method.GET, mUrl,
    new Response.Listener<byte[]>() { 
         @Override 
         public void onResponse(byte[] response) { 
       // TODO handle the response 
        try { 
        if (response!=null) {

          FileOutputStream outputStream;
          String name=<FILE_NAME_WITH_EXTENSION e.g reference.txt>;
            outputStream = openFileOutput(name, Context.MODE_PRIVATE);
            outputStream.write(response);
            outputStream.close();
            Toast.makeText(this, "Download complete.", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        Log.d("KEY_ERROR", "UNABLE TO DOWNLOAD FILE");
        e.printStackTrace();
    }
  }
} ,new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
// TODO handle the error
error.printStackTrace();
  }
}, null);
      RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext(), new HurlStack());
      mRequestQueue.add(request);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 Android 上使用 volley 下载任何文件(pdf 或 zip)? 的相关文章

  • 查看寻呼机 - 使用静态变量以编程方式滑动到下一页

    我想在我的 ViewPager 中以编程方式制作幻灯片 我的问题是 滑动事件是由放置在 ViewPager 保存的片段内部的按钮调用的 我知道代码 viewpager setCurrentItem int index 现在我的想法是使 Vi
  • 意图?如何注册以获得传入电子邮件提醒?

    这里是极限 Android 开发新手 好吧 Android 开发新手 而不是一般开发 我想编写一个应用程序 当电子邮件进入设备时会收到通知 并根据电子邮件中的数据 主题 发件人 收件人等 采取各种操作 我认为我要做的是创建一个带有 Inte
  • 使用 GoogleServices 插件时忽略 Gradle ArchivesBaseName

    我经常使用 archivesbasename 来重命名我的输出 apk 但自从使用 google services 插件后 它就被忽略了 我能做些什么来让它再次工作吗 下面附上了我完整的 build gradle 感谢您的指点 apply
  • 如何使用retrofit2进行GET请求?

    我有一个在本地主机上运行的安静的 Web 服务 我想在该剩余 URL 上发出 Retrofit2 GET 请求 MainActivity java private void requestData public static final S
  • Android向后兼容技术

    我现在在开发基于最新 API 15 ICS 的 15 项活动 Android 应用程序方面取得了进展 现在我发现应用程序的主要功能主义者即使支持 android v4 也不向后兼容 例如 1 fragment事务动画 2 将StringSe
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • 我的 Android 设备需要安装哪个驱动程序才能运行我的应用程序?

    我购买了 intex mobile 来在真实设备中测试我的 Android 应用程序 然而 该设备不存在于 OEM USB 驱动程序列表中 android 提供的设备列表中 我检查了 intex 官方网站 但不确定到底需要安装哪个驱动程序
  • 如何在android中画一条曲线?

    我是 Android 新手 正在开发一个关于绘制线条的示例项目 我想画一条连接两点的曲线或高架线 x1 y1 and x2 y2 我试过canvas drawArc 方法 但是RectF内的值drawArc方法只是圆的 x y 中心点 它在
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 如何更改 Android 12 启动屏幕中的图标形状?

    我想要矩形形状的启动屏幕图标 而不是 android 12 中的圆形形状 我不相信你可以 如果你看这里的第 3 点 https developer android com about versions 12 features splash
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()

    我在实现 Facebook SDK 时遇到此错误 并且我tried https stackoverflow com questions 15490399 error inflating class com facebook widget l
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • Application.onLowMemory() 未调用

    我创建了自己的应用程序类 我尝试调试它 代码在 Application onCreate 处停止 但不会在 onLowMemory 处停止 为了测试该场景 我打开了许多其他高内存应用程序 我看到的是调试会话终止 在 Eclipse 中 并且
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports

随机推荐

  • jQuery 中的“return this.each()”有什么作用?

    我正在寻找一个 jQuery 插件 它只有一个功能 通过构造函数参数设置适当的默认值后 该函数定义了几个辅助函数 然后作为最后一部分返回对 this each 的调用 如下所示 return this each function long
  • 如何将三地址代码转换为MIPS汇编语言?

    我正在做一个项目 其中我必须创建一个翻译器来为 C 代码生成 MIPS 汇编代码 正在使用的编程语言是 C 我已经完成了三个地址代码的生成 但我对如何进一步进行感到非常困惑 如前所述 这是直接翻译 确实没有什么需要澄清的 以下面的三地址代码
  • 用于查找竞争条件/死锁的 C#/.NET 分析工具

    是否有工具可以分析 NET 代码并查找竞争条件 我有一些代码具有公共静态属性 可以获取或创建私有静态字段 它还有一个公共静态方法 将该字段设置为 null 是的 我知道 由于这两种方法都没有锁 所以可以肯定的是 将来事情会出现严重错误 我需
  • 防止 WPF ListView 或 ListBox 显示“一半”项目

    在我们的应用程序中 网格内有一些 ListView 和 ListBox 您可以在网格拆分器的帮助下更改控件的实际高度 这样做时 您可以调整 ListBox 的高度 以便其中一项不完全可见 因为 ListView 变得太短而无法显示它 这是我
  • 通过curl设置cookie

    我试图在 PHP 中通过 cURL 设置 cookie 但失败了 我的 php 代码如下所示 ch curl init url http localhost javascript 20cookies test cookies html cu
  • Android GCM 向服务器发送令牌

    The GCM 示例项目 https github com googlesamples google services blob master android gcm app src main java gcm play android s
  • 如何在运行Python脚本后找到CPU利用率和内存使用率

    我正在使用 python 工作 我有一个 python 脚本 它从文本文件读取数据并将其保存到数据库中 我有一些要求 比如找到以下 3 点 1 Total execution time taken by the script for run
  • 以编程方式变亮或变暗十六进制颜色(或 RGB 和混合颜色)

    这是我正在开发的一个函数 用于以编程方式使十六进制颜色变亮或变暗特定的量 只需传入一个字符串 例如 3F6D2A 对于颜色 col 和一个以 10 为基数的整数 amt 用于变亮或变暗的量 要变暗 请传入负数 即 20 我这样做的原因是因为
  • android 旋转动画

    我正在尝试制作旋转图像动画 我需要旋转一个图标itself就像他们在进度条中所做的那样 但我得到的是围绕一个圆圈旋转的图像 这是我的动画代码
  • 我如何知道我的应用程序是如何在 Mac OS 上启动的?

    我遇到了一个问题 并且长期以来一直在寻找解决方案 我做了一个应用程序 其中有一个option当系统启动使用启动服务时 它将自动启动应用程序 如果应用程序由用户启动 即打开 app 我想做点什么 如果应用程序是在系统启动时通过启动服务启动的
  • Lambda 性能改进,Java 8 与 11

    我对 lambda 与方法参考运行了一些 JMH 测试 看起来类似于 IntStream reduce Integer max vs IntSream reduce i1 i2 gt Integer max i1 i2 我注意到 在 Jav
  • 允许用户在 Windows 8 应用程序中使用 RichEditBox 中的选项卡?

    现在 选项卡功能将焦点移动到下一个控件 我希望它实际上只是在文本框中选项卡 我注意到您也无法在 Windows 8 邮件应用程序中使用 Tab 键 还有 RichTextBox 替代品吗 目前 在 RTM 版本中 没有AcceptsTab就
  • 如何从 .pac 文件中查找代理服务器和密码

    我正在使用 dynatrace ajax 版本 它需要代理服务器和密码才能连接到 dynatrace 服务器 问题是我只有我们在工作中使用的 pac 文件 URL 是否可以知道我的请求解析到哪个代理服务器和端口 以便我可以直接提供代理服务器
  • 在Java中确定特定字体是否可以呈现特定字符

    Java中有没有办法确定特定字体是否可以呈现特定字符 Try Font f you have your font Character c Nun N in Farsi if f canDisplay c int gcode f getMis
  • 使用 CSS 的角图像

    我有一个相对简单的设计 这让我感到困惑 它有4张大图片需要粘贴到左上角 右下角和左下角 右下角 图像非常大 内容容器与它们重叠 有点像这样 结构 http www kalleload net uploads nizyjc zxyagpfrm
  • plpgsql 函数中 IF EXISTS 内部标识符的变量

    CREATE OR REPLACE FUNCTION drop now RETURNS void AS BODY DECLARE row record BEGIN RAISE INFO in FOR row IN select relnam
  • GitSmartHTTP for gitolite repositories over Apache 不允许我推送

    我正在设置一个 git http backend CGI 脚本来处理我的git domain子域 服务器位于AWS云上的ELB 弹性负载均衡器 后面 我的服务器配置如下 我的 git 托管由 gitolite 处理
  • 如何在 PhpStorm 中的类构造函数中自动生成参数分配?

    有谁知道当您创建类构造函数并且想要将所有参数分配给相应的类字段时如何在 PhpStorm 中保存输入 我现在用手写 并且可以使用自动完成功能很快地完成 但这仍然是一个非常乏味的过程 例如 class Foo private param1 p
  • 如何在 Google 上的操作中添加 Firebase 存储中的音频?

    明确地说 我想知道如何在 Google 上的操作中添加 Firebase 存储中的音频 几周以来我一直被这个问题困扰 我已将音频上传到 Firebase 存储中 并从中复制了 Firebase 提供的链接 并将音频的 URL 以给定格式粘贴
  • 是否可以在 Android 上使用 volley 下载任何文件(pdf 或 zip)?

    如何使用 android volley 下载 pdf 文件或 zip 文件 使用字符串 JSON 图像或视频很容易工作 其他文件呢 首先 您必须创建自己的自定义请求类 例如 class InputStreamVolleyRequest ex