#1.下载utils项目
https://github.com/wyouflf/xUtils
#2布局文件中实现UI
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MainActivity" >
-
- <EditText
- android:id="@+id/tv_path"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="http://down.360safe.com/inst.exe" />
- <Button
- android:layout_marginTop="10dip"
- android:layout_width="match_parent"
- android:onClick="download"
- android:layout_height="wrap_content"
- android:text="下载"
- />
- <TextView
- android:id="@+id/tv_info"
- android:layout_width="match_parent"
- android:layout_marginTop="10dip"
- android:layout_height="wrap_content"
- android:text="提示信息"
- />
-
-
- </LinearLayout>
#3.在mainactivity中实现代码功能
- package com.wzw.downloaddemo;
-
-
- import java.io.File;
-
- import com.lidroid.xutils.HttpUtils;
- import com.lidroid.xutils.exception.HttpException;
- import com.lidroid.xutils.http.HttpHandler;
- import com.lidroid.xutils.http.ResponseInfo;
- import com.lidroid.xutils.http.callback.RequestCallBack;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.TextView;
-
- public class MainActivity extends Activity {
-
- private EditText etPath;
- private TextView tvInfo;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- etPath=(EditText) findViewById(R.id.tv_path);
- tvInfo=(TextView) findViewById(R.id.tv_info);
-
-
- }
- public void download(View v){
- String path =etPath.getText().toString();
- HttpUtils http = new HttpUtils();
- http.download(path, "/sdcard/360.exe", true, true, new RequestCallBack<File>() {
-
- <span style="white-space:pre"> </span>@Override
- public void onStart() {
- tvInfo.setText("正在连接...");
- }
-
- @Override
- public void onLoading(long total, long current, boolean isUploading) {
- tvInfo.setText(current + "/" + total);
- }
-
- @Override
- public void onFailure(HttpException error, String msg) {
- tvInfo.setText(msg);
- }
-
- @Override
- public void onSuccess(ResponseInfo<File> responseInfo) {
-
- tvInfo.setText("downloaded:" + responseInfo.result.getPath());
- }
- });
-
- }
-
- }
用Utils的话比用传统的方式要方便的多。
//-------------------------------------自己----------------------------------
(1)
- HttpUtils http = new HttpUtils();
- http.download(path, "/sdcard/360.exe", true, true, new RequestCallBack<File>() {
这里的"/sdcard/360.exe",就是文件名,也就是下载之后保存的文件。所以这里不要传目录进去,而是一个文件名。
(2)
- @Override
- public void onFailure(HttpException error, String msg) {
- tvInfo.setText(msg);
- }
这里的处理过于简单了,msg打印出来是一堆java.net.xxx类似这样子的提示。而需要的是啥原因,
网络有问题,还是连接超时,这里HttpException如何做判断呢?得出原因,根据原因进行提示用户?????
所有评论(0)