Android 应用自动更新代码

jopen 11年前

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);        }        }