android 程序自动更新
16lz
2021-01-23
public ProgressDialog pBar; private Handler handler = new Handler(); public void updatedialog(){Dialog dialog = new AlertDialog.Builder(index.this).setTitle("系统更新") .setMessage("发现新版本,请更新!")// 设置内容 .setPositiveButton("确定",// 设置确定按钮 new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { pBar = new ProgressDialog(index.this); pBar.setTitle("正在下载"); pBar.setMessage("请稍候..."); pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER); downFile("http://192.168.1.102:7070/hessian/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); }
读写SD卡需要开放权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
更多相关文章
- Android PopupMenu-点击按钮弹出下拉框
- Android 显示确认对话框
- android Dialog的确定按钮点击后不取消对话框
- FaceBook like 按钮在 Android WebView中的Bug的解决
- Android TextView限定行数最大值,点击按钮显示所有内容
- Android 实现多个输入框的对话框
- Android 取得对话框中EditText的字符串
- android 按钮的文字显示不全
- Android中开关按钮IOS效果的实现