import java.io.File;    
 
import java.io.FileOutputStream;  
 
import java.io.IOException;    
 
import java.io.InputStream;    
 
import org.apache.http.HttpEntity;    
import org.apache.http.HttpResponse;    
import org.apache.http.client.ClientProtocolException;    
import org.apache.http.client.HttpClient;    
import org.apache.http.client.methods.HttpGet;    
import org.apache.http.impl.client.DefaultHttpClient;    
    
import android.app.AlertDialog;    
import android.app.Dialog;    
import android.app.ProgressDialog;    
import android.content.DialogInterface;    
import android.content.Intent;    
import android.net.Uri;    
import android.os.Bundle;    
import android.os.Environment;    
import android.os.Handler;    
    
public class Update extends BaseActivity {    
    public ProgressDialog pBar;    
    private Handler handler = new Handler();    
    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.update);    
        Dialog dialog = new AlertDialog.Builder(Update.this).setTitle("系统更新")    
                .setMessage("发现新版本,请更新!")// 设置内容    
                .setPositiveButton("确定",// 设置确定按钮    
                        new DialogInterface.OnClickListener() {    
    
                            @Override    
                            public void onClick(DialogInterface dialog,    
                                    int which) {    
                                pBar = new ProgressDialog(Update.this);    
                                pBar.setTitle("正在下载");    
                                pBar.setMessage("请稍候...");    
                                pBar    
                                        .setProgressStyle(ProgressDialog.STYLE_SPINNER);    
                                downFile("http://url:8765/OA.apk");     
                                     
                            }    
    
                        }).setNegativeButton("取消",      
                        new DialogInterface.OnClickListener() {    
                            public void onClick(DialogInterface dialog,    
                                    int whichButton) {    
                                // 点击"取消"按钮之后退出程序    
                                    
                            }    
                        }).create();// 创建    
        // 显示对话框    
        dialog.show();    
    
    }    
    
    void downFile(final String url) {    
        pBar.show();    
        new Thread() {    
            public void run() {    
                HttpClient client = new DefaultHttpClient();    
                // params[0]代表连接的url    
                HttpGet get = new HttpGet(url);    
                HttpResponse response;    
                try {    
                    response = client.execute(get);    
                    HttpEntity entity = response.getEntity();    
                    long length = entity.getContentLength();    
                    InputStream is = entity.getContent();    
                    FileOutputStream fileOutputStream = null;    
                    if (is != null) {    
    
                        File file = new File(Environment    
                                .getExternalStorageDirectory(), "OA.apk");    
                        fileOutputStream = new FileOutputStream(file);    
                            
                        byte[] buf = new byte[1024];    
                        int ch = -1;    
                        int count = 0;    
                        while ((ch = is.read(buf)) != -1) {    
                            // baos.write(buf, 0, ch);    
                            fileOutputStream.write(buf, 0, ch);    
                            count += ch;    
                            if (length > 0) {    
                                
                            }    
    
                        }    
    
                    }    
                    fileOutputStream.flush();    
                    if (fileOutputStream != null) {    
                        fileOutputStream.close();    
                    }    
                    down();    
                } catch (ClientProtocolException e) {    
                    // TODO Auto-generated catch block    
                    e.printStackTrace();    
                } catch (IOException e) {    
                    // TODO Auto-generated catch block    
                    e.printStackTrace();    
                }    
            }    
    
        }.start();    
    
    }    
    
    void down() {    
        handler.post(new Runnable() {    
            public void run() {    
                pBar.cancel();    
                update();    
            }    
        });    
    
    }    
    
    void update() {    
    
        Intent intent = new Intent(Intent.ACTION_VIEW);    
        intent.setDataAndType(Uri.fromFile(new File("/sdcard/OA.apk")),    
                "application/vnd.android.package-archive");    
        startActivity(intent);    
    }    
    
}   

posted on 2011-03-13 01:39  kitea  阅读(164)  评论(0)    收藏  举报