`
jk138
  • 浏览: 150544 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

Android 自动更新程序

阅读更多

研究了下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 request
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);

	}

	// Process the HTTP Post request
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//检测版本更新
		PrintWriter out = response.getWriter();
		out.print("2");
	}

}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics