Android - 通过更新进度栏下载文件

2024-06-24

我的 Dropbox 帐户中有多个文件。我成功下载文件。但我想显示带有百分比的进度条,以便在下载所有文件时。进度条完成。我正在使用 AsyncTask 下载文件。这是我的代码。

public void onPreExecute(){

        mDialog = new ProgressDialog(mContext);
        mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        mDialog.setMax(100);
        mDialog.show();
    }

    public void downloadFiles(String filename){
        Log.i("Item Name",filename);
        File dir = null;
        Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);


        if(isSDPresent){

        File sdCard = Environment.getExternalStorageDirectory();
         dir = new File (sdCard.getAbsolutePath() + "/AllSecure");
        if (!dir.exists()) {
            dir.mkdirs();
        }
        }else{

            dir = mContext.getDir("users", Context.MODE_PRIVATE); //Creating an internal dir;
            if(!dir.exists())
            {
                 dir.mkdirs();
            }     

        }

        File file = new File(dir, filename);
        try {
            FileOutputStream mFileOutputStream=new FileOutputStream(file);

            DropboxFileInfo mDropboxFileInxfo=mApi.getFile(PHOTO_DIR + filename, null, mFileOutputStream, null);

            } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            } catch (DropboxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
    }


    protected String doInBackground(String... params) {

         SessionUtil ses = new SessionUtil(mContext);
            AndroidAuthSession session = ses.buildSession();
            mApi = new DropboxAPI<AndroidAuthSession>(session);


        Entry entries = null;

        try {
            System.out.println("mApi is " + mApi);
            entries = mApi.metadata(PHOTO_DIR, 10000, null, true, null);
        } catch (DropboxException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        for (Entry e : entries.contents) {
            if (!e.isDeleted) {
                //Log.i("Is Folder",String.valueOf(e.isDir));
                downloadFiles(e.fileName());
                 mFileLen = entries.bytes;
                Log.i("Item Name",e.fileName());
            }
        }



       return null;
    }

    protected void onProgressUpdate(Integer... progress) {

    }

    @Override
    protected void onPostExecute(String result) {
        mDialog.dismiss();



    }

Dropbox API 中有一个有用的抽象类,称为 ProgressListener,我这样使用它

DBApi.getFile(dropPath, null, outputStream, new ProgressListener(){
                    @Override
                    public long progressInterval() {
                        return 500;
                    }
                    @Override
                    public void onProgress(long arg0, long arg1) {
                        int totalSize=(int) arg1;
                        int downloadedSize=(int) arg0;
                        //Here you can interact with progressbar
                    }
                });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 通过更新进度栏下载文件 的相关文章

随机推荐

  • C# 将十进制序列化为 xml

    我有一个小数属性 比如 XmlElementAttribute DataType decimal decimal Price 问题是我想强制它始终以 2 的精度进行序列化 但如果价格是 10 50 它将被序列化为 XML 例如
  • jQuery UI 可拖动约束

    我想做的是在一个较小的 div 中包含一个大图像 用户可以在包含的 div 中拖动它 足够简单 类似于http oneblackbear com draggable index html http oneblackbear com drag
  • 工作人员未正确返回的结果 - 雪 - 调试

    我正在使用snow在 R 中封装以在 a 上执行函数SOCK具有在 Linux 操作系统上运行的多台计算机 3 的集群 我尝试用两者运行代码parLapply and clusterApply 如果工作线程级别出现任何错误 工作节点的结果将
  • Bootstrap 4 灵活响应式导航栏菜单

    请注意 我不是问如何对齐导航栏菜单中的项目 左或右 而是问如何动态地将项目从导航栏移动到下拉菜单 I m using Bootstrap 4 1 in my project My top main menu contains many li
  • 为什么变量名通常以字母“m”开头? [复制]

    这个问题在这里已经有答案了 查看 Android 教程 例如记事本教程 http developer android com resources tutorials notepad notepad ex1 html 我注意到几乎所有变量的命
  • R:检测“主”路径并删除或过滤 GPS 轨迹,可能使用内核?

    有没有办法过滤掉那些不属于主路径的部分 正如您在图片中看到的 我想删除划掉的部分 同时保留主路径 我已经尝试使用动物园 滚动中位数但没有成功 我想我可能可以使用某种内核来完成这项任务 但我不确定 我还尝试了不同的平滑方法 功能 但这些方法
  • 单击另一个元素时触发下拉选择框

    我正在尝试 替换 选择输入上的按钮 我查看了 jquery 中的选择替换插件 但在我看来它们都有点臃肿 我想要实现的是一个简单的跨度 位于选择框的下拉按钮上 单击它时使选择选项下降 这是我所拥有的 document ready functi
  • 错误:使用替代方法写入重载方法值:

    我正在尝试读取固定宽度的文件并将其写入文本文件 下面是代码 输入文件布局字段的长度 4 10 3 5 3 1 1 5 7 094482018 07 10 022 14012 000 0 30000A 002290 059412018 07
  • CSS 中的下拉菜单?

    我正在寻找一种构建下拉菜单的方法 基本上 我有一个网站 底部有不同的按钮 其中一些应该有下拉菜单 以便鼠标悬停时在其上方显示一些按钮 哦 我想要一个不需要大型库甚至不需要 javascript 的解决方案 但这只是因为它更干净 使用 jav
  • 确定时间序列数据的 SOM(自组织映射)中的集群成员资格

    我也在做一个需要对时间序列数据进行聚类的项目 我正在使用在 MATLAB 中运行的 SOM 工具箱进行聚类 但遇到了以下问题 我们如何确定哪些数据属于哪个集群 SOM从数据集中随机选择数据样本 并为每个数据样本找到BMU 据我所知 SOM算
  • 带空格的 Elastic Search 通配符查询失败 7.11

    我在 7 11 版中将我的数据编入弹性搜索索引 这是我直接将文档添加到索引时得到的映射 properties name type text fields keyword type keyword ignore above 256 我还没有添
  • jQuery 承诺是否符合 Promises/A+

    我读过了本文 http thewayofcode wordpress com 2013 01 22 javascript promises and why jquery implementation is broken 这是基于著名的多梅尼
  • Eclipse 无法识别智能卡库

    从 Sun 的 jdk 1 8 迁移到 Openjdk12 后 Eclipse 无法识别 javax smartcardio 的整个库 例如 import javax smartcardio Card 会导致错误 Card cannot b
  • 如何有条件地使用 Perl 中的模块?

    我想在 Perl 中做这样的事情 Module1 ReportHashFile1 ReportHashFile1 pm Module2 ReportHashFile2 ReportHashFile2 pm if Condition1 use
  • 从 `.` `data.table` 导入,以便 lintr 识别它

    跑步时lintr https github com jimhester lintr在 R 函数上使用data table我收到以下警告 warning no visible global function definition for Di
  • 带有 dcast data.table 的宽格式[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想转换这样的表 set seed 1 mydata lt data frame ID rep 1 4 each 3 R rep
  • 将 IIFE 的公共成员分配给变量与返回对象有什么区别

    我最近查看了大量 JavaScript 代码 并且看到了使用分配 IIFE 的 公共 属性的两种不同方法 第一个是创建一个变量并将该变量分配给 IIFE 内部的属性 如下所示 var public1 function var foo Foo
  • 在 Microsoft Graph 中查找 Azure AD 架构扩展 AppId

    如果通过 Azure AD Connect 同步自定义属性 则会对 Azure AD 进行架构扩展 并且在 Azure AD 中创建一个关联的应用程序 其中包含DisplayName 租户架构扩展应用程序 不幸的是 这些扩展名都是唯一的 并
  • 使用 R 将逗号分隔的列表值转换为稀疏矩阵

    在新的数据结构中 每个segmentId应该变成一个列名 每个 personId 仍应有一行 id SegmentId 单元格是分段 ID 在逗号分隔列表中出现的次数的计数 下面的例子 按原样 我正在尝试以这种形式转换数据 PersonID
  • Android - 通过更新进度栏下载文件

    我的 Dropbox 帐户中有多个文件 我成功下载文件 但我想显示带有百分比的进度条 以便在下载所有文件时 进度条完成 我正在使用 AsyncTask 下载文件 这是我的代码 public void onPreExecute mDialog