xUtils的文件下载与安装,xUtils的文件上传

 开篇报错注意:本教程是基于xUtils-2.6.14.jar版本实现的

由于studio中6.0以后安卓取消了httpclient,而xutils则基于httpclient开发的,所以现在无法使用,将会有以下的错误

Error:(55, 30) 错误: 无法访问HttpRequestBase

找不到org.apache.http.client.methods.HttpRequestBase的类文件
Error:(85, 30) 错误: 无法访问HttpEntityEnclosingRequest
找不到org.apache.http.HttpEntityEnclosingRequest的类文件
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
2 个错误
:app:compileDebugJavaWithJavac FAILED

解决方案:在使用xutils的modle的build.gradle的  android的下添加

 这句话:useLibrary 'org.apache.http.legacy'    即可解决

xUtils的文件下载

    //这里Demo展示的是下载一个apk文件路径,下载后安装//其他文件可以删除文件的安装
    public void xUtilsHttpUtilDonLoadFile(String downLoadUrl, String savePath) {
        //保存位置
        //关于下边的File.separator原文The system-dependent string used to separate components in filenames ('/').
        //其实就是代表了一个斜杠
        final File filepath = new File(savePath + File.separator + "MyDownLoadText" + File.separator + downLoadUrl);//仅创建路径的File对象
        if (!filepath.exists()) {
            filepath.mkdir();//如果路径不存在就先创建路径
        }
        // 准备进度条Progress弹窗
        final ProgressDialog dialog = new ProgressDialog(this);
        dialog.setCancelable(true);// 设置是否可以通过点击Back键取消
        dialog.setTitle("下载中");
        //Progress弹窗设置为水平进度条
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条
        //httputils网络请求工具
        HttpUtils http = new HttpUtils();
        //下载请求
        /*
             第一参数:downLoadUrl是网络下载位置
             第二参数:filepath.getPath()是下载保存位置
            第三个参数:如果目标文件存在,接着未完成的部分继续下载。服务器不支持RANGE时将从新下载。
            第四个参数:如果从请求返回信息中获取到文件名,下载完成后自动重命名。
            第五个参数:下载的监听
         */
        HttpHandler handler = http.download(downLoadUrl, filepath.getPath(), true, true, new RequestCallBack<File>() {
            @Override
            public void onStart() {
                dialog.show();//展示关闭弹窗
                Log.i("", "onStart: 开始下载");
            }
            @Override
            public void onLoading(long total, long current, boolean isUploading) {
                Log.i("下载中", "onLoading:总共: " + total + "已下" + current);
                dialog.setMax((int) total);
                dialog.setProgress((int) current);
            }
            @Override
            public void onSuccess(ResponseInfo<File> responseInfo) {
                dialog.dismiss();//关闭弹窗
                //安装下载的文件(如果不是apk这里可以不用安装,下载完成后自己看着办吧)
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.fromFile(new File(filepath.getPath().toString())), "application/vnd.android.package-archive");
                startActivity(intent);
                //卸载
                  /*    Uri packageURI = Uri.parse("package:com.demo.CanavaCancel");//package:com.demo.CanavaCancel应用的包名
                        Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
                         startActivity(uninstallIntent);*/
                Log.i("完成", "onStart: 下载完成");
            }
            @Override
            public void onFailure(HttpException error, String msg) {
                dialog.dismiss();//关闭弹窗
                Log.i("取消", "onStart: 下载失败" + error.toString());
            }
        });
    }

 xUtils的文件上传

 /*
        这里是 xUtils的文件post上传,
        url是上传到网络的位置
        userid是其他的参数
        filePath是要上传的文件位置
     */
    public  void  xUtilsUpLoadFile(String url,String userid,String filePath){
        //RequestParams对象是用来存放请求参数的
        RequestParams params = new RequestParams();
        params.addBodyParameter("userid",userid);//这里是一般的参数
        params.addBodyParameter("file",new File(filePath));//这里才是重点上传文件的参数
        //HttpUtils网络请求
        HttpUtils http = new HttpUtils();
        //发送请求
        /**
         * 第一个参数:请求方式
         *第二个参数:请求地址
         *第三个参数:请求携带的参数类
         *第四个参数:网络请求的监听
         */
        http.send(HttpRequest.HttpMethod.POST, url, params, new RequestCallBack<String>() {
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                Log.i(TAG, "onSucceed:上传结果 "+responseInfo.result);
            }
            @Override
            public void onFailure(HttpException e, String s) {
                Log.i(TAG, "onFailure: 上传失败"+e.toString());
            }
        });
    }

 

转载于:https://www.cnblogs.com/lizhanqi/p/5805901.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目前xUtils主要有四大模块: DbUtils模块: android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体,支持延时加载; 支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。 ViewUtils模块: android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定; 新的事件绑定方式,使用混淆工具混淆后仍可正常工作; 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。 HttpUtils模块: 支持同步,异步方式的请求; 支持大文件上传,上传大文件不会oom; 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求; 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。 BitmapUtils模块: 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象; 支持加载网络图片和本地图片; 内存管理使用lru算法,更好的管理bitmap内存; 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等... 使用xUtils快速开发框架需要有以下权限: 混淆时注意事项: 添加Android默认混淆配置${sdk.dir}/tools/proguard/proguard-android.txt 不要混淆xUtils中的注解类型,添加混淆配置:-keep class * extends java.lang.annotation.Annotation { *; } 对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称@Table(name="xxx"),@Id(column="xxx"),@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx");收缩

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值