Android应用客户端自动升级教程

karolee 2010-08-27

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

  }

  }

转载:http://www.inandroid.cn/bbs/thread-2976-1-1.html

相关推荐

lionelf / 0评论 2020-07-28