研究了下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");}}

更多相关文章

  1. Android 代码混淆及反编译方法
  2. android传值方法之一
  3. android实现app通过jni调用C/C++方法
  4. android为按钮添加事件的三种方法
  5. Android在初始化时弹出popwindow的方法 .
  6. android开发环境搭建最新方法
  7. Android自定义属性 及 TypedArray的使用方法
  8. android程序退出当前activity的方法

随机推荐

  1. Android(安卓)PinnedSectionListView异常
  2. 8、RxJava+Retrofit+okhttp上传多张图片
  3. Android(安卓)在线升级APK
  4. android drawable setBounds()
  5. android: MapView加载多个 overlay 内存
  6. android录音实现
  7. android按键两次退出程序
  8. [置顶] Android(安卓)AsyncTask异步的学
  9. shoppingcart
  10. Android对话框