用xutils3.0进行下载项目更新

用xutils3.0进行下载项目更新

本文主要介绍用xutils3.0下载项目更新的相关资料,很不错,有参考价值。有需要的朋友可以参考一下。

xUtils简介

XUtils包含了很多实用的android工具。

XUtils支持大文件上传,更全面的http请求协议支持(10个谓词),更灵活的ORM,更多的事件注释支持,不会混淆。

XUitls至少兼容android 2.2 (api level 8)。

目前xUtils主要有四大模块:

DbUtils模块:

android中的Orm框架,一行代码即可增删查;

交易支持,默认关闭;

可以自定义表名、列名、外键、唯一性约束、NOT NULL约束、检查约束等。by标注(需要混淆时请标注表名和列名);

支持绑定外键,保存实体时自动保存或更新与外键关联的实体;

自动加载外键关联实体,并支持延迟加载;

支持链式表达式查询,更直观的查询语义,参考下面的介绍或者sample中的例子。

ViewUtils模块:

android中的ioc框架可以完全注释的方式绑定UI、资源和事件;

新的事件绑定方法在与混淆工具混淆后仍然可以正常工作;

目前支持20种常用的事件绑定。请参见ViewCommonEventListener类和包com . lid roid . xutils . view . annotation . event。

HttpUtils模块:

支持同步和异步请求;

支持大文件上传,上传大文件不会oom;

支持GET、POST、PUT、MOVE、COPY、DELETE、HEAD、OPTIONS、TRACE、CONNECT请求;

支持下载301/302重定向,支持根据Content-Disposition设置是否重命名下载的文件;

返回文本内容的请求(默认情况下只启用GET请求)支持缓存,并且可以设置默认的过期时间和当前请求的过期时间。

BitmapUtils模块:

加载位图时,无需考虑加载位图过程中的oom现象和android容器快速滑动时图像的错位。

支持加载网络图片和本地图片;

内存管理使用lru算法更好的管理位图内存;

可配置线程加载线程数、缓存大小、缓存路径、加载显示动画等。

以上说这么多都是为下文做铺垫,下面步入主题:

写例子比较简单,用xutils3.0下载项目更新。

1.首先,通过网络请求,确定版本是否需要更新。

2.如果要更新,会弹出一个弹出窗口。我使用系统自己的对话框来显示下载的版本号和下载的内容提示。

3.当用户点击下载时,开始下载,下载时显示水平进度条。

4.下载完成后,进度条消失,系统被调用安装apk。

以下代码中使用的xutils的jar包版本是3.3.32。

包com . item . weixin;

导入Java . io . file;

导入org . JSON . JSON exception;

导入org . JSON . JSON object;

导入org . xutils . x;

导入org . xutils . common . callback;

导入org . xutils . http . request params;

导入Android . annotation . suppress lint;

导入Android . app . activity;

导入Android . app . alert dialog;

导入Android . app . progress dialog;

导入Android . content . context;

导入Android . content . dialog interface;

导入Android . content . intent;

导入Android . content . pm . package info;

导入Android . content . pm . package manager . namenotfoundexception;

导入Android . net . uri;

导入Android . OS . bundle;

导入Android . OS . environment;

导入Android . view . view;

导入Android . view . window;

导入Android . widget . button;

/**

*设置xutils下载

*

* @作者管理员

*

*/

公共类LoginActivity扩展Activity {

私按钮ll _ update

私有ProgressDialog pDialog

私有字符串nowVersion

私有ProgressDialog progressDialog

@覆盖

受保护的void onCreate(Bundle saved instancestate){

//TODO自动生成的方法存根

super . oncreate(savedInstanceState);

requestWindowFeature(窗口。特征_编号_标题);

setContentView(r . layout . activity _ log in);

ll _ update=(Button)findViewById(r . id . BTN _ log in);

ll_update.setOnClickListener(新视图。OnClickListener() {

@覆盖

public void onClick(View arg0) {

//TODO自动生成的方法存根

check update();

}

});

尝试{

package info package info=getPackageManager()。getPackageInfo(

getPackageName(),0);

现在版本=包信息。版本名称;

} catch(NameNotFoundException e){

//TODO自动生成的捕捉块

e。printstacktrace();

}

}

/**

* 下载更新,

*/

受保护的void checkUpdate() {

//TODO自动生成的方法存根

proDialogShow(loginactivity。“这,”正在查询.);

request params params=新请求参数( URL );

x.http()。get(params,新回调commoncallbackring(){

@覆盖

公共取消时无效(取消的异常参数0){

//TODO自动生成的方法存根

}

@覆盖

public void on error(Throwable arg 0,boolean arg1) {

//TODO自动生成的方法存根

PDialogHide();

System.out.println(提示网络错误);

}

@覆盖

public void onFinished() {

//TODO自动生成的方法存根

}

@覆盖

成功时公共void(字符串参数0){

//TODO自动生成的方法存根

PDialogHide();

尝试{

JSON object object=new JSON object(arg 0);

布尔成功=对象。获取布尔值(“succee”);

如果(成功){

字符串desc=对象。getstring(“desc”);

字符串下载URL=object。getstring(“下载URL”);

字符串版本名称=对象。getstring(“版本名”);

如果(现在版本。等于(版本名)){

System.out.println(当前版本为最新,不用跟新);

}否则{

//不同,弹出更新提示对话框

setUpDialog(versionname,downloadurl,desc);

}

}

} catch (JSONException e) {

//TODO自动生成的捕捉块

e。printstacktrace();

}

}

});

}

/**

*

* @param版本名称

* 地址中版本的名字

* @param downloadurl

* 下载包的地址

* @帕拉姆desc

* 版本的描述

*/

受保护的void setUpDialog(字符串版本名称,最终字符串downloadurl,

字符串desc) {

//TODO自动生成的方法存根

报警对话框=新报警对话框。建筑商(这个)。setCancelable(false)。setTitle(下载版本名称版本).setMessage(desc)。setNegativeButton(取消,空)。setPositiveButton(下载,新的对话界面OnClickListener() {

@覆盖

public void onClick(dialog interface arg 0,int arg1) {

//TODO自动生成的方法存根

设置下载(下载网址);

}

}).create();

对话。show();

}

/**

* 下载包

*

* @param downloadurl

* 下载的全球资源定位器(统一资源定位器)

*

*/

@SuppressLint(SdCardPath )

受保护的无效集下载(字符串下载URL){

//TODO自动生成的方法存根

request params params=新请求参数(下载URL);

参数。setautorename(true);//断点下载

参数。setsavefilepath(/mnt/SD卡/demo。apk’);

x.http()。get(params,新回调ProgressCallbackFile() {

@覆盖

公共取消时无效(取消的异常参数0){

//TODO自动生成的方法存根

}

@覆盖

public void on error(Throwable arg 0,boolean arg1) {

//TODO自动生成的方法存根

if(progressDialog!=空进度对话框。正在显示()){

进度对话框。dissolve();

}

System.out.println(提示更新失败);

}

@覆盖

public void onFinished() {

//TODO自动生成的方法存根

}

@覆盖

成功时公共无效(文件arg0) {

//TODO自动生成的方法存根

if(progressDialog!=空进度对话框。正在显示()){

进度对话框。dissolve();

}

意向意向=新意向(意向. ACTION _ VIEW);

intent.setFlags(Intent .标志_活动_新_任务);

意图。设置dataandtype(uri。从文件(新文件(环境。getExternalStorageDirectory(), demo.apk ),

应用程序/vnd。安卓。package-archive’);

开始活动(意图);

}

@覆盖

public void onl oading(long arg0,long arg1,boolean arg2) {

//TODO自动生成的方法存根

进度对话框。设置max((int)arg 0);

进度对话框。设置进度((int)arg 1);

}

@覆盖

公共void onStarted() {

//TODO自动生成的方法存根

System.out.println(开始下载);

进度对话框=新进度对话框(loginactivity。这个);

进度对话框。setprogressstyle(进度对话框.风格_横);//设置为水平进行条

progressDialog.setMessage(正在下载中.);

进度对话框。设置进度(0);

进度对话框。show();

}

@覆盖

公共void onWaiting() {

//TODO自动生成的方法存根

}

});

}

私有void proDialogShow(上下文上下文,字符串消息){

pDialog=新进度对话框(上下文);

pdialog。设置消息(msg);

//pdialog . setcancelable(false);

p dialog . show();

}

私有void PDialogHide() {

尝试{

if (pDialog!=null pDialog.isShowing()) {

pdialog . dissolve();

}

} catch(异常e) {

e . printstacktrace();

}

}

}

以上是边肖推出的xutils3.0对下载项目的更新。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

用xutils3.0进行下载项目更新