Android从零单排之自动跟新

Android从零单排之自动更新

转载请注明出处:

自动更新原理

当我们发布我们的应用程序的时候,肯定会想到后续版本的更新,那么该怎么对我们的程序进行更新呢? 更新APK的原理实际上就是比较程序中的AndroidManifest.xml中的versionCode进行对比,如果发现更高版本的code,则代表有新版本的程序发布,此时就可以对用户提示“请更新新版本”。

友盟自动更新介绍

开发者当然可以自己写一个service去服务器上读取apk文件中的versionCode值,然后做比对进行分析。但是如果开发时间比较紧迫的情况下,使用第三方写好的工具,可是方便的多了。毕竟有了轮子,干嘛还要造???

友盟自动更新 使用友盟的更新服务,就需要你把应用上传到它的服务器上,然后集成好友盟自动更新服务的apk,会去检测开发者上传的应用版本信息,如果发现服务器上的版本更高,就会提示用户有新的应用版本,然后就可以下载新版应用进行安装。

友盟支持多种更新方式:自动更新、手动更新、静默更新。

准备工作

首先需要去官网下载SDK,地址: 下载下来SDK之后,会看到有三个文件夹:分别是demo,jar包和res资源文件

>>>添加APPKEY<meta-dataandroid:name=”UMENG_APPKEY”android:value=”你的APPKEY” /><meta-dataandroid:name=”UMENG_CHANNEL”android:value=”Channel ID” />添加service<service><activity>

OK,准备工作已经完毕。

自动更新

自动更新的意思就是:当打开应用之后,判断网络然后主动去检测版本更新,如果有更新,则提示用户下载更新。 自动更新代码很简洁:

UmengUpdateAgent.update(this);

采用这种方式,会弹出友盟编写的对话框:

不过这种界面有点丑。 我们下面来对更新添加监听,然后自定义弹出框:

/*** 显示更新对话框** @param updateResponse* @param context*/UmengUpdateAgent.setDefault();UmengUpdateAgent.setUpdateOnlyWifi(false);UmengUpdateAgent.setUpdateAutoPopup(false);UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {(int statusCode,UpdateResponse updateResponse) {Toast.makeText(MainActivity.this, statusCode + “”, 1000).show();if (statusCode == UpdateStatus.Yes && updateResponse != null) {showUpdateDialog(updateResponse);}}});UpdateConfig.setDebug(true);UmengUpdateAgent.setRichNotification(true);UmengUpdateAgent.update(getApplicationContext());

setDefault():恢复默认设置。如果应用中不止一次调用了检测更新的方法,每次的设置并不一样的话,就需要先恢复默认设置,然后在进行设置别的参数。

setUpdateOnlyWifi():设置是否之后再wifi环境下检测。

setDeltaUpdate(): 增量更新开关。

setUpdateAutoPoup():更新提示开关。我们要自己处理更新回调,需要关闭自动弹出提示。

UmengUpdateListener():更新回调类。其中有一个回调方法onUpdateReturned(int upadteStatus, UpdateResponse upadteInfo),通过updateStatus来判断是否有更新,upodateInfo则封装了一些更新的内容,包括版本号,更新日志等。

(final UpdateResponse updateResponse,final Context context) {AlertDialog.Builder updateAlertDialog = new AlertDialog.Builder(context);updateAlertDialog.setIcon(R.drawable.icon_app);updateAlertDialog.setTitle(“版本更新提示”);String showMessage = “最新版本:” + updateResponse.version + “\n”+ “更新日志:\n” + updateResponse.updateLog;updateAlertDialog.setMessage(showMessage);updateAlertDialog.setNegativeButton(“立即升级”,new DialogInterface.OnClickListener() {(DialogInterface dialog, int which) {File file = UmengUpdateAgent.downloadedFile(context,updateResponse);if (null == file) {UmengUpdateAgent.startDownload(context,updateResponse);} else {// 已经下载完成的最新版APK,直接安装UmengUpdateAgent.startInstall(context, file);}}});updateAlertDialog.setNeutralButton(“忽略此版本”,new DialogInterface.OnClickListener() {(DialogInterface dialog, int which) {UmengUpdateAgent.ignoreUpdate(context, updateResponse);}});updateAlertDialog.setPositiveButton(“取消”, null);if (!((Activity) context).isFinishing())updateAlertDialog.show();}

如果你需要显示更新进度,在下载APK开始、进行、结束或者失败的时候,作出相应的反应,就需要设置一下下载回调接口:

UmengUpdateAgent.setDownloadListener(new UmengDownloadListener(){() {Toast.makeText(mContext, “download start” , Toast.LENGTH_SHORT).show();}(int progress) {Toast.makeText(mContext, “download progress : ” + progress + “%” , Toast.LENGTH_SHORT).show();}(int result, String file) {Toast.makeText(mContext, “download file path : ” + file , Toast.LENGTH_SHORT).show();}});手动更新.你曾经说,最大的愿望,

Android从零单排之自动跟新

相关文章:

你感兴趣的文章:

标签云: