Android检查更新(是否强制更新)

Android应用客户端通常会需要更新,而且根据需求分为普通更新和强制更新。是否强制更新可通过检查更新时从服务器获取的标志位来判断。

{private Context mContext; //上下文private String apkUrl =”http://183.232.83.10/dd.myapp.com/16891/” +”C4F9FF39FAE9184222DC278DC7309611.apk?mkey” +”=5541c92b6a9cca8d&f=d388&fsname=com.yangmbin” +String savePath = String saveFileName = savePath + DOWNLOADING = DOWNLOADED = DOWNLOAD_FAILED = progress; cancelFlag = serverVersion = clientVersion = forceUpdate = (Context context) {this.mContext = context;}() {//如果版本最新,则不需要更新if (serverVersion <= clientVersion)return;AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);dialog.setTitle(“发现新版本 :” + serverVersion);dialog.setMessage(updateDescription);dialog.setPositiveButton(“现在更新”, new OnClickListener() {(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubarg0.dismiss();showDownloadDialog();}});//是否强制更新if (forceUpdate == false) {dialog.setNegativeButton(“待会更新”, new OnClickListener() {(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubarg0.dismiss();}});}alertDialog1 = dialog.create();alertDialog1.setCancelable(false);alertDialog1.show();}() {AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);dialog.setTitle(“正在更新”);final LayoutInflater inflater = LayoutInflater.from(mContext);View v = inflater.inflate(R.layout.softupdate_progress, null);mProgress = (ProgressBar) v.findViewById(R.id.update_progress);dialog.setView(v);//如果是强制更新,则不显示取消按钮if (forceUpdate == false) {dialog.setNegativeButton(“取消”, new OnClickListener() {(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubarg0.dismiss();cancelFlag = false;}});}alertDialog2 = dialog.create();alertDialog2.setCancelable(false);alertDialog2.show();//下载apkdownloadAPK();}() {new Thread(new Runnable() {() {// TODO Auto-generated method stubtry {URL url = new URL(apkUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.connect();int length = conn.getContentLength();InputStream is = conn.getInputStream();File file = new File(savePath);if(!file.exists()){file.mkdir();}String apkFile = saveFileName;File ApkFile = new File(apkFile);FileOutputStream fos = new FileOutputStream(ApkFile);int count = 0;byte buf[] = new byte[1024];do{int numread = is.read(buf);count += numread;progress = (int)(((float)count / length) * 100);//更新进度 mHandler.sendEmptyMessage(DOWNLOADING);if(numread <= 0){//下载完成通知安装 mHandler.sendEmptyMessage(DOWNLOADED);break;}fos.write(buf, 0, numread);}while(!cancelFlag); //点击取消就停止下载. fos.close();is.close();} catch(Exception e) {mHandler.sendEmptyMessage(DOWNLOAD_FAILED);e.printStackTrace();}}}).start();}/** 更新UI的handler */private Handler mHandler = new Handler() {(Message msg) {// TODO Auto-generated method stubswitch (msg.what) {case DOWNLOADING:mProgress.setProgress(progress);break;case DOWNLOADED:if (alertDialog2 != null)alertDialog2.dismiss();installAPK();break;case DOWNLOAD_FAILED:Toast.makeText(mContext, “网络断开,请稍候再试”, Toast.LENGTH_LONG).show();break;default:break;}}};() {File apkFile = new File(saveFileName);if (!apkFile.exists()) {return;}Intent intent = new Intent(Intent.ACTION_VIEW);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setDataAndType(Uri.parse(“file://” + apkFile.toString()), “application/vnd.android.package-archive”);mContext.startActivity(intent);}}对话框中进度条用到的布局:softupdate_progress.xml<?xml version=”1.0″ encoding=”utf-8″?><RelativeLayout =”wrap_content”><ProgressBar==”?android:attr/progressBarStyleHorizontal” /></RelativeLayout>

使用方法:

//这里来检测版本是否需要更新 mUpdateManager = new UpdateManager(this); mUpdateManager.showNoticeDialog();

检查更新通常是在初始化的时候,,请求服务器检查版本,如果有更新,则把相关url、是否强制更新和版本号等信息通过showNoticeDialog的参数传递进去,做相关的初始化即可。

困难是人的教科书。

Android检查更新(是否强制更新)

相关文章:

你感兴趣的文章:

标签云: