Android handler用法详解二(例2)

直接看代码:

public class Update extends Activity {

       public ProgressDialog pBar;
       private Handler handler = new Handler();
         @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.smt);
           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://localhost:8080/examples/images/Blockx_3D.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(), "Blockx_3D.apk");
                           fileOutputStream = new FileOutputStream(file);
                             byte[] buf = new byte[1024];
                           int ch = -1;
                           int count = 0;
                           while ((ch = is.read(buf)) != -1) {
                               fileOutputStream.write(buf, 0, ch);
                               count += ch;
                               if (length > 0) {
                               }
                           }
                       }
                       fileOutputStream.flush();
                       if (fileOutputStream != null) {
                           fileOutputStream.close();
                       }
                       down();
                   } catch (ClientProtocolException e) {
                       e.printStackTrace();
                   } catch (IOException e) {
                       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/Blockx_3D.apk")),                   "application/vnd.android.package-archive");
           startActivity(intent);
       }
   }


你可能感兴趣的:(android,File,null,url,dialog,byte)