Android 自动更新程序
16lz
2021-01-23
研究了下Android的更新程序的写法,学习了以下这篇文章
App自动更新之通知栏下载:http://www.cnblogs.com/qianxudetianxia/archive/2011/04/12/2010919.html
文章没有源码可以下载看,我自己研究学习了,附上源码并说下我的做法那不同。
一.在initGlobal()方法中
原来是这样写
public void initGlobal(){
try{ Global.localVersion = getPackageManager().getPackageInfo(getPackageName(),0).versionCode; //设置本地版本号 Global.serverVersion = 1;//假定服务器版本为2,本地版本默认是1 }catch (Exception ex){ ex.printStackTrace(); }}
因为服务器的版本号在这里是写的比较固定了,如果程序是写在客户端的,不能随便就能修改, 我的做法呢,就是在服务器端里,返回服务器的最新的版本号。
我的initGlobal写法是,去了Global.serverVersion
public void initGlobal(){ try { //设置本地版本号Global.localVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; } catch (Exception e) {// TODO: handle exception} }
然后呢,在SubwayActivity的onCreate方法里,向服务器发送一个检测版本的方法,就得到一个服务器最新的版本号
SubwayActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Global.serverVersion=Integer.parseInt(check());checkVersion();}
//获取服务器程序的版本号
public String check(){String url = HttpUtil.BASE_URL;return HttpUtil.getHTTPUtil().queryStringForPost(url);}
HttpUtil这个类,是封装了发送请求的方法,你只要改一个BASE_URL,换成自己的就行了。
二.updateService这个类呢,里面有个onStartCommand方法,SDK5以后才有这个方法。
三.AndroidManifest.xml
要注册updateService还要加上SupwayApplication
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.chaowen.subwap.startup" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="5" /> <application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".SupwayApplication"> <activity android:name=".SubwayActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:enabled="true" android:name="com.chaowen.update.updateService" /> </application> <uses-permission android:name="android.permission.INTERNET"/></manifest>
后台的servlet
package com.cnjmwl.scm.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.cnjmwl.scm.util.ResponseTemplateHelper;public class UpdateServlet extends HttpServlet {// Process the HTTP Get requestpublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}// Process the HTTP Post requestpublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//检测版本更新PrintWriter out = response.getWriter();out.print("2");}}
更多相关文章
- Android 代码混淆及反编译方法
- android传值方法之一
- android实现app通过jni调用C/C++方法
- android为按钮添加事件的三种方法
- Android在初始化时弹出popwindow的方法 .
- android开发环境搭建最新方法
- Android自定义属性 及 TypedArray的使用方法
- android程序退出当前activity的方法