#1.下载utils项目

https://github.com/wyouflf/xUtils


#2布局文件中实现UI


[html]  view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical"  
  6.     tools:context=".MainActivity" >  
  7.   
  8.     <EditText  
  9.         android:id="@+id/tv_path"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:text="http://down.360safe.com/inst.exe" />  
  13.     <Button  
  14.         android:layout_marginTop="10dip"  
  15.         android:layout_width="match_parent"  
  16.         android:onClick="download"  
  17.         android:layout_height="wrap_content"  
  18.         android:text="下载"  
  19.          />  
  20.     <TextView  
  21.          android:id="@+id/tv_info"  
  22.           android:layout_width="match_parent"  
  23.           android:layout_marginTop="10dip"  
  24.           android:layout_height="wrap_content"  
  25.           android:text="提示信息"  
  26.          />  
  27.       
  28.   
  29. </LinearLayout>  

#3.在mainactivity中实现代码功能

[java]  view plain copy
  1. package com.wzw.downloaddemo;  
  2.   
  3.   
  4. import java.io.File;  
  5.   
  6. import com.lidroid.xutils.HttpUtils;  
  7. import com.lidroid.xutils.exception.HttpException;  
  8. import com.lidroid.xutils.http.HttpHandler;  
  9. import com.lidroid.xutils.http.ResponseInfo;  
  10. import com.lidroid.xutils.http.callback.RequestCallBack;  
  11.   
  12. import android.os.Bundle;  
  13. import android.app.Activity;  
  14. import android.view.Menu;  
  15. import android.view.View;  
  16. import android.widget.EditText;  
  17. import android.widget.TextView;  
  18.   
  19. public class MainActivity extends Activity {  
  20.   
  21.     private EditText etPath;  
  22.     private TextView tvInfo;  
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_main);  
  27.         etPath=(EditText) findViewById(R.id.tv_path);  
  28.         tvInfo=(TextView) findViewById(R.id.tv_info);  
  29.           
  30.           
  31.     }  
  32.     public void download(View v){  
  33.         String path =etPath.getText().toString();  
  34.         HttpUtils http = new HttpUtils();  
  35.         http.download(path, "/sdcard/360.exe"truetruenew RequestCallBack<File>() {  
  36.   
  37.     <span style="white-space:pre">    </span>@Override  
  38.             public void onStart() {  
  39.                 tvInfo.setText("正在连接...");  
  40.             }  
  41.               
  42.              @Override  
  43.             public void onLoading(long total, long current, boolean isUploading) {  
  44.                    tvInfo.setText(current + "/" + total);  
  45.              }  
  46.               
  47.              @Override  
  48.              public void onFailure(HttpException error, String msg) {  
  49.                    tvInfo.setText(msg);  
  50.               }  
  51.   
  52.             @Override  
  53.             public void onSuccess(ResponseInfo<File> responseInfo) {  
  54.                 // TODO Auto-generated method stub  
  55.                 tvInfo.setText("downloaded:" + responseInfo.result.getPath());  
  56.             }  
  57.         });  
  58.           
  59.     }  
  60.   
  61. }  


用Utils的话比用传统的方式要方便的多。


//-------------------------------------自己----------------------------------

(1)

  1.  HttpUtils http = new HttpUtils();  
  2.         http.download(path, "/sdcard/360.exe"truetruenew RequestCallBack<File>() { 
这里的"/sdcard/360.exe",就是文件名,也就是下载之后保存的文件。所以这里不要传目录进去,而是一个文件名。


(2)

  1. @Override  
  2.              public void onFailure(HttpException error, String msg) {  
  3.                    tvInfo.setText(msg);  
  4.               }  
这里的处理过于简单了,msg打印出来是一堆java.net.xxx类似这样子的提示。而需要的是啥原因,

网络有问题,还是连接超时,这里HttpException如何做判断呢?得出原因,根据原因进行提示用户?????

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐