OkGo上传文件和下载文件
发布日期:2021-06-28 19:37:23 浏览次数:2 分类:技术文章

本文共 5931 字,大约阅读时间需要 19 分钟。

一.下载文件

String apkName = TimeUtil.getSystem() + ".apk";//下载APK的名字,目前名字暂定为时间,等和后台确认协议后再修改        WaitDialog.Builder builder = new WaitDialog.Builder(this).setMessage("准备下载");        BaseDialog dialog = builder.show();        String url = "https://pack.qiyutianxia.com/gamepacks/S-wxcqbfb.apk";//一个可以下载APK测试网址        OkGo.
get(url).tag(this).execute(new FileCallback(DirKeys.DIR_APP_UPDATE, apkName) { @Override public void onSuccess(Response
response) { builder.setMessage("下载完成"); dialog.dismiss(); /*下载完成后直接安装*/ AppUtils.installApp(response.body()); } @Override public void onError(Response
response) { super.onError(response); ToastUtils.error(getString(R.string.apkerror, response.message())); dialog.dismiss(); } @Override public void downloadProgress(Progress progress) { super.downloadProgress(progress); builder.setMessage("下载进度\n" + progress.currentSize / BasicKeys.KB + "KB/" + progress.totalSize / BasicKeys.KB + "KB"); } });

二.BasicKeys

public class BasicKeys {    /******************** 存储相关常量 ********************/    /**     * Byte与Byte的倍数     */    public static final int BYTE = 1;    /**     * KB与Byte的倍数     */    public static final int KB = 1024;    /**     * MB与Byte的倍数     */    public static final int MB = 1048576;    /**     * GB与Byte的倍数     */    public static final int GB = 1073741824;    /**     * 毫秒与毫秒的倍数     */    public static final int MSEC = 1;    /******************** 时间相关常量 ********************/    /**     * 秒与毫秒的倍数     */    public static final int SEC = 1000;    /**     * 分与毫秒的倍数     */    public static final int MIN = 60000;    /**     * 时与毫秒的倍数     */    public static final int HOUR = 3600000;    /**     * 天与毫秒的倍数     */    public static final int DAY = 86400000;    /******************** 常量 ********************/    public static final int KEY_0 = 0;    public static final int KEY_1 = 1;    public static final int KEY_2 = 2;    public static final int KEY_3 = 3;    public static final int KEY_4 = 4;    public static final int KEY_5 = 5;    public static final int KEY_6 = 6;    public static final int KEY_7 = 7;    public static final int KEY_8 = 8;    public static final int KEY_9 = 9;    public static final int KEY_10 = 10;    public static final int KEY_11 = 11;    public static final int KEY_12 = 12;    public static final int KEY_13 = 13;    public static final int KEY_14 = 14;    public static final int KEY_15 = 15;    public static final int KEY_16 = 16;    public static final int KEY_17 = 17;    public static final int KEY_18 = 18;    public static final int KEY_19 = 19;    public static final int KEY_20 = 20;    public static final int KEY_200 = 200;    public static final int KEY_500 = 500;    public static final int KEY_404 = 404;    public static final String KEY_NO_SPACE = "";    public static final String KEY_ONE_SPACE = " ";    public static final String KEY_SEPARATOR= "/";    public static final String KEY_NEXT= "\n";    public static final String KEY_QUESTION = "?";    public static final String KEY_AND = "&";    public static final String KEY_COLON= ": ";    public static final String KEY_EQUAL= "=";    public static final String KEY_UTF8= "UTF-8";    public static final String KEY_NULL= "数据为空";    public static final String KEY_USE_API= "调用网络接口";    public static final String KEY_NOT_EXIST= "不存在";    public static final String KEY_DATA_ERROR= "传入参数错误!";    public static final String KEY_EXCEPTION= "出现异常";    public static final String KEY_NOT_NET= "无网络";    public static final String KEY_ACTION_MAIN="android.intent.action.MAIN";    public static final String KEY_FILE = "file";    public static final String HTTP = "http://";    public static final String COLON = ":";    public static final String COMMA = ",";}

三.上传文件

实战:

WaitDialog.Builder builder = new WaitDialog.Builder(mActivity).setMessage("视频上传");        builder.show();        File file = new File(url);        if (mActivity instanceof InspectionActivity) {            InspectionActivity inspectionActivity = (InspectionActivity) mActivity;            lineNumber = inspectionActivity.getLineNumber();        }        OkGo.
>post(Api.getuploadVideoUrl()) .params("file", file) .params(Api.TEST_LINE_NUMBER, lineNumber) // TODO: 2020-10-27 暂时写死,用于测试 .params(Api.SERIAL_NUMBER, "3604252010220002") .params(Api.CUR_TEST_TIMES, "1")// .params(Api.SERIAL_NUMBER, carInfo.getSerialNumber())// .params(Api.CUR_TEST_TIMES, carInfo.getTestingTimes()) .params("item ", item.getCode())//视频代号 .execute(new JsonCallback
>() { @Override public void TokenOut() { } @Override public void onSuccess(Response
> response) { super.onSuccess(response); if (response.body().isSuccess()) { builder.setMessage("视频上传成功").dismiss(); item.setUrl(url); item.setUploadStatus(1); videoItemAdapter.notifyDataSetChanged(); } else { ToastUtils.error(getString(R.string.uploaderror, response.message())); builder.dismiss(); item.setUploadStatus(2); videoItemAdapter.notifyDataSetChanged(); } } @Override public void onError(Response
> response) { super.onError(response); ToastUtils.error(getString(R.string.uploaderror, response.message())); builder.dismiss(); item.setUploadStatus(2); videoItemAdapter.notifyDataSetChanged(); } @Override public void uploadProgress(Progress progress) { super.uploadProgress(progress); //上传进度 builder.setMessage("上传进度\n" + progress.currentSize / BasicKeys.KB + "KB/" + progress.totalSize / BasicKeys.KB + "KB"); } });

 

转载地址:https://blog.csdn.net/xxdw1992/article/details/108766956 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android-PickerView的使用
下一篇:安卓适配AutoSize详解

发表评论

最新留言

很好
[***.229.124.182]2024年04月09日 05时33分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

安卓app开发框架!写给即将正在找工作的Android攻城狮,成功入职阿里 2019-04-29
安卓app开发环境搭建!Android最强保活黑科技的最强技术实现,完整PDF 2019-04-29
安卓app软件开发教程!免费Android高级工程师学习资源,值得收藏! 2019-04-29
安卓chrome插件开发!Android架构师教你如何突破瓶颈,跳槽薪资翻倍 2019-04-29
安卓rom开发教程!跟Android初学者分享几点经验,写给正在求职的安卓开发 2019-04-29
原理解析!2021年教你增加拿到BAT等大厂offer几率,offer拿到手软 2019-04-29
原生安卓开发!驱动核心源码详解和Binder超系统学习资源,实战篇 2019-04-29
大牛手把手带你!2021年Android进阶者的新篇章,完整PDF 2019-04-29
太牛了!Android程序员最大的悲哀是什么?面试真题解析 2019-04-29
作为字节跳动面试官,BAT这种大厂履历意味着什么?赶快收藏备战金九银十! 2019-04-29
大牛深入讲解!Android面试中常问的MMAP到底是啥东东?再不刷题就晚了! 2019-04-29
太赞了!你会的还只有初级安卓工程师的技术吗?3面直接拿到offer 2019-04-29
腾讯Android开发面试记录,安卓系列学习进阶视频 2019-04-29
阿里P8架构师的Android大厂面试题总结,醍醐灌顶! 2019-04-29
阿里、腾讯大厂Android面试必问知识点系统梳理,满满干货指导 2019-04-29
阿里大神最佳总结Flutter进阶学习笔记,内容太过真实 2019-04-29
阿里巴巴内部Jetpack宝典意外流出!送大厂面经一份! 2019-04-29
阿里正式启动2021届春季校招!字节跳动Android面试凉凉经,实战解析 2019-04-29
阿里珍藏版Android框架体系架构手写文档,原理+实战+视频+源码 2019-04-29
零基础也能看得懂!2021中级Android开发面试解答,附赠课程+题库 2019-04-29