您的位置:首页 > 其它

版本更新

2016-07-29 12:16 232 查看

版本更新

本文是以解析xml的为例

.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。
当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。

首先我们需要请求网络的信息得到接口里面给我们都是什么信息

我们以这个接口为例:(http://www.oschina.net/MobileAppVersion.xml)

以下是关键的一个更新的工具类:

<code class="hljs java has-numbering"><span class="hljs-keyword">import</span> java.io.BufferedInputStream;
<span class="hljs-keyword">import</span> java.io.File;
<span class="hljs-keyword">import</span> java.io.FileNotFoundException;
<span class="hljs-keyword">import</span> java.io.FileOutputStream;
<span class="hljs-keyword">import</span> java.io.IOException;
<span class="hljs-keyword">import</span> java.io.InputStream;
<span class="hljs-keyword">import</span> java.net.HttpURLConnection;
<span class="hljs-keyword">import</span> java.net.MalformedURLException;
<span class="hljs-keyword">import</span> java.net.URL;

<span class="hljs-keyword">import</span> com.bwei.test.url.URLS;

<span class="hljs-keyword">import</span> android.app.AlertDialog;
<span class="hljs-keyword">import</span> android.app.ProgressDialog;
<span class="hljs-keyword">import</span> android.app.AlertDialog.Builder;
<span class="hljs-keyword">import</span> android.content.Context;
<span class="hljs-keyword">import</span> android.content.DialogInterface;
<span class="hljs-keyword">import</span> android.content.Intent;
<span class="hljs-keyword">import</span> android.content.pm.PackageInfo;
<span class="hljs-keyword">import</span> android.content.pm.PackageManager;
<span class="hljs-keyword">import</span> android.content.pm.PackageManager.NameNotFoundException;
<span class="hljs-keyword">import</span> android.net.Uri;
<span class="hljs-keyword">import</span> android.os.Environment;
<span class="hljs-keyword">import</span> android.os.Handler;
<span class="hljs-keyword">import</span> android.os.Message;
<span class="hljs-keyword">import</span> android.util.Log;
<span class="hljs-keyword">import</span> android.widget.Button;
<span class="hljs-keyword">import</span> android.widget.Toast;

<span class="hljs-javadoc">/**
* 更新版本的工具类
*<span class="hljs-javadoctag"> @author</span>
*<span class="hljs-javadoctag"> @date</span>
*
*/</span>

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UpdateVersionutil</span> {</span>

<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String TAG = <span class="hljs-keyword">this</span>.getClass().getName();
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">int</span> UPDATA_NONEED = <span class="hljs-number">0</span>;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">int</span> UPDATA_CLIENT = <span class="hljs-number">1</span>;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">int</span> GET_UNDATAINFO_ERROR = <span class="hljs-number">2</span>;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">int</span> SDCARD_NOMOUNTED = <span class="hljs-number">3</span>;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">int</span> DOWN_ERROR = <span class="hljs-number">4</span>;
<span class="hljs-keyword">private</span> Button getVersion;
<span class="hljs-keyword">private</span> String localVersion;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Context mContext;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> UpdateVersionutil updateVersionutil;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">boolean</span> mNeedUpdate;

InputStream is;
<span class="hljs-keyword">private</span> Update parse;

<span class="hljs-keyword">public</span> <span class="hljs-title">UpdateVersionutil</span>(Context mContext) {
<span class="hljs-keyword">super</span>();
<span class="hljs-keyword">this</span>.mContext = mContext;
}

<span class="hljs-javadoc">/**
*   检测更新
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">startUpdate</span>(){
localVersion = getVersionName();
CheckVersionTask cv = <span class="hljs-keyword">new</span> CheckVersionTask();
<span class="hljs-keyword">new</span> Thread(cv).start();
}

<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> UpdateVersionutil  <span class="hljs-title">getUpdataManger</span>(Context context){
<span class="hljs-keyword">if</span>(updateVersionutil==<span class="hljs-keyword">null</span>){
updateVersionutil=<span class="hljs-keyword">new</span> UpdateVersionutil(context);
}
<span class="hljs-keyword">return</span> updateVersionutil;
}

<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkUpdata</span>(){
updateVersionutil.startUpdate();
}

<span class="hljs-keyword">private</span> String <span class="hljs-title">getVersionName</span>()   {
<span class="hljs-comment">//getPackageName()是你当前类的包名,0代表是获取版本信息  </span>
PackageManager packageManager =mContext.getPackageManager();
PackageInfo packInfo = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
packInfo = packageManager.getPackageInfo(mContext.getPackageName(),
<span class="hljs-number">0</span>);
} <span class="hljs-keyword">catch</span> (NameNotFoundException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
<span class="hljs-keyword">return</span> packInfo.versionName;
}

<span class="hljs-javadoc">/**
*  网络请求
*  获取到网络接口的版本号进行对比
*<span class="hljs-javadoctag"> @author</span>
*<span class="hljs-javadoctag"> @date</span>
*/</span>

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CheckVersionTask</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Runnable</span> {</span>

<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title"&
4000
gt;run</span>() {
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">//这里URLS.UPDATE_VERSION 是网络接口获取网络信息</span>
URL url = <span class="hljs-keyword">new</span> URL(URLS.UPDATE_VERSION);
<span class="hljs-comment">//*****************************************************</span>
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(<span class="hljs-number">5000</span>);
conn.setRequestMethod(<span class="hljs-string">"GET"</span>);
<span class="hljs-keyword">int</span> responseCode = conn.getResponseCode();
<span class="hljs-keyword">if</span> (responseCode == <span class="hljs-number">200</span>) {
<span class="hljs-comment">// 从服务器获得一个输入流 </span>
is = conn.getInputStream();
}
<span class="hljs-comment">//*******************************************</span>
<span class="hljs-comment">//调用解析的方法</span>
parse = Update.parse(is);
Url = parse.getDownloadUrl();
<span class="hljs-comment">//**********************************************</span>
System.out.println(<span class="hljs-string">"新版版本名:"</span>+parse.getVersionName());
System.out.println(<span class="hljs-string">"本地版本名:"</span>+localVersion);

<span class="hljs-comment">//对比版本号</span>
<span class="hljs-keyword">if</span> (parse.getVersionName().equals(localVersion)) {
mNeedUpdate=<span class="hljs-keyword">false</span>;
Log.i(TAG, <span class="hljs-string">"版本号相同"</span>);
Message msg = <span class="hljs-keyword">new</span> Message();
msg.what = UPDATA_NONEED;
handler.sendMessage(msg);
<span class="hljs-comment">// LoginMain();</span>
} <span class="hljs-keyword">else</span> {
mNeedUpdate=<span class="hljs-keyword">true</span>;
Log.i(TAG, <span class="hljs-string">"版本号不相同 "</span>);
Message msg = <span class="hljs-keyword">new</span> Message();
msg.what = UPDATA_CLIENT;
handler.sendMessage(msg);
}
} <span class="hljs-keyword">catch</span> (Exception e) {
Message msg = <span class="hljs-keyword">new</span> Message();
msg.what = GET_UNDATAINFO_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}
}

Handler handler = <span class="hljs-keyword">new</span> Handler() {
<span class="hljs-annotation">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">handleMessage</span>(Message msg) {
<span class="hljs-comment">// TODO Auto-generated method stub</span>
<span class="hljs-keyword">super</span>.handleMessage(msg);
<span class="hljs-keyword">switch</span> (msg.what) {
<span class="hljs-keyword">case</span> UPDATA_NONEED:
Toast.makeText(mContext, <span class="hljs-string">"不需要更新"</span>,
Toast.LENGTH_SHORT).show();
<span class="hljs-keyword">case</span> UPDATA_CLIENT:
<span class="hljs-comment">//对话框通知用户升级程序   </span>
showUpdataDialog();
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> GET_UNDATAINFO_ERROR:
<span class="hljs-comment">//服务器超时   </span>
Toast.makeText(mContext, <span class="hljs-string">"获取服务器更新信息失败"</span>, <span class="hljs-number">1</span>).show();
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> DOWN_ERROR:
<span class="hljs-comment">//下载apk失败  </span>
Toast.makeText(mContext, <span class="hljs-string">"下载新版本失败"</span>, <span class="hljs-number">1</span>).show();
<span class="hljs-keyword">break</span>;
}
}
};
<span class="hljs-comment">/*
*
* 弹出对话框通知用户更新程序
*
* 弹出对话框的步骤:
*  1.创建alertDialog的builder.
*  2.要给builder设置属性, 对话框的内容,样式,按钮
*  3.通过builder 创建一个对话框
*  4.对话框show()出来
*/</span>
<span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">showUpdataDialog</span>() {
AlertDialog.Builder builer = <span class="hljs-keyword">new</span> Builder(mContext);
builer.setTitle(<span class="hljs-string">"版本升级"</span>);
<span class="hljs-comment">//*********************************************</span>
<span class="hljs-comment">//更新提示语</span>
builer.setMessage(parse.getUpdateLog());
<span class="hljs-comment">//*******************************************************</span>
<span class="hljs-comment">//当点确定按钮时从服务器上下载 新的apk 然后安装   װ</span>
builer.setPositiveButton(<span class="hljs-string">"立马更新"</span>, <span class="hljs-keyword">new</span> DialogInterface.OnClickListener() {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(DialogInterface dialog, <span class="hljs-keyword">int</span> which) {
Log.i(TAG, <span class="hljs-string">"下载apk,更新"</span>);
downLoadApk();
}
});
builer.setNegativeButton(<span class="hljs-string">"稍后再说"</span>, <span class="hljs-keyword">new</span> DialogInterface.OnClickListener() {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(DialogInterface dialog, <span class="hljs-keyword">int</span> which) {
<span class="hljs-comment">// TODO Auto-generated method stub</span>
<span class="hljs-comment">//do sth</span>
}
});
AlertDialog dialog = builer.create();
dialog.show();
}
<span class="hljs-comment">/*
* 从服务器中下载APK
*/</span>
<span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">downLoadApk</span>() {
<span class="hljs-keyword">final</span> ProgressDialog pd;    <span class="hljs-comment">//进度条对话框  </span>
pd = <span class="hljs-keyword">new</span>  ProgressDialog(mContext);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage(<span class="hljs-string">"正在下载更新"</span>);
pd.show();
<span class="hljs-keyword">new</span> Thread(){
<span class="hljs-annotation">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">run</span>() {
<span class="hljs-keyword">try</span> {
File file = DownLoadManager.getFileFromServer(parse.getDownloadUrl(), pd);
sleep(<span class="hljs-number">3000</span>);
installApk(file);
pd.dismiss(); <span class="hljs-comment">//结束掉进度条对话框  </span>
} <span class="hljs-keyword">catch</span> (Exception e) {
Message msg = <span class="hljs-keyword">new</span> Message();
msg.what = DOWN_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}}.start();
}

<span class="hljs-comment">//安装apk   </span>
<span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">installApk</span>(File file) {
Intent intent = <span class="hljs-keyword">new</span> Intent();
<span class="hljs-comment">//执行动作  </span>
intent.setAction(Intent.ACTION_VIEW);
<span class="hljs-comment">//执行的数据类型  </span>
intent.setDataAndType(Uri.fromFile(file), <span class="hljs-string">"application/vnd.android.package-archive"</span>);
mContext.startActivity(intent);
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String Url;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getUrl</span>(){

<span class="hljs-keyword">return</span> Url;
}

<span class="hljs-javadoc">/**
*   判断SD卡是什么状态进行下载
*<span class="hljs-javadoctag"> @author</span>
*<span class="hljs-javadoctag"> @date</span>
*/</span>

<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DownLoadManager</span> {</span>

<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> File <span class="hljs-title">getFileFromServer</span>(String path, ProgressDialog pd)  {
<span class="hljs-comment">//如果相等的话表示当前的sdcard挂载在手机上并且是可用的</span>
<span class="hljs-keyword">if</span>(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
URL url = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
url = <span class="hljs-keyword">new</span> URL(path);
} <span class="hljs-keyword">catch</span> (MalformedURLException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
HttpURLConnection conn = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
conn = (HttpURLConnection) url.openConnection();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
conn.setConnectTimeout(<span class="hljs-number">5000</span>);
<span class="hljs-comment">//获取到文件的大小 </span>
pd.setMax(conn.getContentLength());
InputStream is = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
is = conn.getInputStream();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
File file = <span class="hljs-keyword">new</span> File(Environment.getExternalStorageDirectory(), <span class="hljs-string">"updata.apk"</span>);
FileOutputStream fos = <span class="hljs-keyword">null</span>;
<span class="hljs-keyword">try</span> {
fos = <span class="hljs-keyword">new</span> FileOutputStream(file);
} <span class="hljs-keyword">catch</span> (FileNotFoundException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
BufferedInputStream bis = <span class="hljs-keyword">new</span> BufferedInputStream(is);
<span class="hljs-keyword">byte</span>[] buffer = <span class="hljs-keyword">new</span> <span class="hljs-keyword">byte</span>[<span class="hljs-number">1024</span>];
<span class="hljs-keyword">int</span> len ;
<span class="hljs-keyword">int</span> total=<span class="hljs-number">0</span>;
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">while</span>((len =bis.read(buffer))!=-<span class="hljs-number">1</span>){
fos.write(buffer, <span class="hljs-number">0</span>, len);
total+= len;
<span class="hljs-comment">//获取当前下载量</span>
pd.setProgress(total);
}
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
<span class="hljs-keyword">try</span> {
fos.close();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
<span class="hljs-keyword">try</span> {
bis.close();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
<span class="hljs-keyword">try</span> {
is.close();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
<span class="hljs-keyword">return</span> file;
}
<span class="hljs-keyword">else</span>{
<span class="hljs-keyword">return</span&g
c901
t; <span class="hljs-keyword">null</span>;
}
}
}
} </code>

上面的代码中我们需要用到获取到信息之后进行解析,这里我用的纸xml:

<code class="hljs java has-numbering"><span class="hljs-javadoc">/**
*      解析获取到输入流
*<span class="hljs-javadoctag"> @param</span> inputStream
*<span class="hljs-javadoctag"> @return</span>
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Update <span class="hljs-title">parse</span>(InputStream inputStream){
Update update = <span class="hljs-keyword">null</span>;
<span class="hljs-comment">//获得XmlPullParser解析器</span>
XmlPullParser xmlParser = Xml.newPullParser();
<span class="hljs-keyword">try</span> {
xmlParser.setInput(inputStream, UTF8);
<span class="hljs-comment">//获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。</span>
<span class="hljs-keyword">int</span> evtType=xmlParser.getEventType();
<span class="hljs-comment">//一直循环,直到文档结束    </span>
<span class="hljs-keyword">while</span>(evtType!=XmlPullParser.END_DOCUMENT){
String tag = xmlParser.getName();
<span class="hljs-keyword">switch</span>(evtType){
<span class="hljs-keyword">case</span> XmlPullParser.START_TAG:
<span class="hljs-comment">//通知信息</span>
<span class="hljs-keyword">if</span>(tag.equalsIgnoreCase(<span class="hljs-string">"android"</span>))
{
update = <span class="hljs-keyword">new</span> Update();
}
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(update != <span class="hljs-keyword">null</span>)
{
<span class="hljs-keyword">if</span>(tag.equalsIgnoreCase(<span class="hljs-string">"versionCode"</span>))
{       <span class="hljs-comment">//字符转换整数          </span>
update.setVersionCode(toInt(xmlParser.nextText(),<span class="hljs-number">0</span>));
}
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(tag.equalsIgnoreCase(<span class="hljs-string">"versionName"</span>))
{
update.setVersionName(xmlParser.nextText());
}
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(tag.equalsIgnoreCase(<span class="hljs-string">"downloadUrl"</span>))
{
update.setDownloadUrl(xmlParser.nextText());
}
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(tag.equalsIgnoreCase(<span class="hljs-string">"updateLog"</span>))
{
update.setUpdateLog(xmlParser.nextText());
}
}
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> XmlPullParser.END_TAG:
<span class="hljs-keyword">break</span>;
}
<span class="hljs-comment">//如果xml没有结束,则导航到下一个节点</span>
evtType=xmlParser.next();
}
} <span class="hljs-keyword">catch</span> (XmlPullParserException e) {
e.printStackTrace();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
} <span class="hljs-keyword">finally</span> {
<span class="hljs-keyword">try</span> {
inputStream.close();
} <span class="hljs-keyword">catch</span> (IOException e) {
<span class="hljs-comment">// TODO Auto-generated catch block</span>
e.printStackTrace();
}
}
<span class="hljs-keyword">return</span> update;
}

<span class="hljs-javadoc">/**
* 字符串转整数
*<span class="hljs-javadoctag"> @param</span> str
*<span class="hljs-javadoctag"> @param</span> defValue
*<span class="hljs-javadoctag"> @return</span>
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">int</span> <span class="hljs-title">toInt</span>(String str, <span class="hljs-keyword">int</span> defValue) {
<span class="hljs-keyword">try</span>{
<span class="hljs-keyword">return</span> Integer.parseInt(str);
}<span class="hljs-keyword">catch</span>(Exception e){}
<span class="hljs-keyword">return</span> defValue;
}</code>

不要忘记了要写相应的bean类:

<code class="hljs java has-numbering"><span class="hljs-javadoc">/**
*   应用程序更新实体类
*<span class="hljs-javadoctag"> @author</span>
*<span class="hljs-javadoctag"> @date</span>
*/</span>
<span class="hljs-annotation">@SuppressWarnings</span>(<span class="hljs-string">"serial"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Update</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span>{</span>

<span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> String UTF8 = <span class="hljs-string">"UTF-8"</span>;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> String NODE_ROOT = <span class="hljs-string">"oschina"</span>;

<span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> versionCode;
<span class="hljs-keyword">private</span> String versionName;
<span class="hljs-keyword">private</span> String downloadUrl;
<span class="hljs-keyword">private</span> String updateLog;

<span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getVersionCode</span>() {
<span class="hljs-keyword">return</span> versionCode;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setVersionCode</span>(<span class="hljs-keyword">int</span> versionCode) {
<span class="hljs-keyword">this</span>.versionCode = versionCode;
}
<span class="hljs-keyword">public</span> String <span class="hljs-title">getVersionName</span>() {
<span class="hljs-keyword">return</span> versionName;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setVersionName</span>(String versionName) {
<span class="hljs-keyword">this</span>.versionName = versionName;
}
<span class="hljs-keyword">public</span> String <span class="hljs-title">getDownloadUrl</span>() {
<span class="hljs-keyword">return</span> downloadUrl;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setDownloadUrl</span>(String downloadUrl) {
<span class="hljs-keyword">this</span>.downloadUrl = downloadUrl;
}
<span class="hljs-keyword">public</span> String <span class="hljs-title">getUpdateLog</span>() {
<span class="hljs-keyword">return</span> updateLog;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setUpdateLog</span>(String updateLog) {
<span class="hljs-keyword">this</span>.updateLog = updateLog;
}</code>

然后我们调用这个就可以了

注意上下文

<code class="hljs avrasm has-numbering">UpdateVersionutil<span class="hljs-preprocessor">.getUpdataManger</span>(this)<span class="hljs-preprocessor">.startUpdate</span>()<span class="hljs-comment">;</span></code>

效果展示:





更新完成!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: