Android 实现版本更新
步骤:
1、获取已安装的软件版本号;
View Code
/** * 获得软件版本号 * * @param context * @return */ public String getVerName(Context context) { String verName = ""; try { verName = context.getPackageManager().getPackageInfo( "com.ichances.zhongyue", 0).versionName; } catch (NameNotFoundException e) { Log.e("获取版本信息出错", e.getMessage()); } return verName; }
2、通过WebService将参数发送给服务端,在服务端进行匹配,返回相应的Map;
3、若需要更新,通过Map中下载Url,将apk下载下来;
View Code
/** * 下载版本文件 */ private void doNewVersionUpdate() { String msg = "发现最新版本" + newVerName + ",是否更新?"; new AlertDialog.Builder(EvenMoreActivity.this) .setTitle("软件更新提示") .setMessage(msg) // 设置内容 .setPositiveButton("更新",// 设置确定按钮 new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { downFile(downUrl); dialog.dismiss(); } }) .setNegativeButton("暂不更新", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }).create().show(); } void downFile(final String url) { new Thread() { public void run() { HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(url); HttpResponse response; try { response = client.execute(get); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); FileOutputStream fileOutputStream = null; if (is != null) { File storeDir = new File(AppSession.storePath); if (!storeDir.exists()) { storeDir.mkdirs(); } File file = new File(AppSession.storePath, packageName); fileOutputStream = new FileOutputStream(file); byte[] buf = new byte[1024]; int ch = -1; while ((ch = is.read(buf)) != -1) { fileOutputStream.write(buf, 0, ch); } } fileOutputStream.flush(); if (fileOutputStream != null) { fileOutputStream.close(); } update(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); }
4、启动安装Intent,即可
View Code