研究了下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");
}
}
分享到:
相关推荐
包含 内外网更新、代码 libs 中有包含 aar 包,可 导入直接使用。直接输入网址、项目名、等 即可。方便快捷
android自动更新程序,好不容易找到了一个分享给大家,希望大家多多下载
android 程序自动更新功能设计,我们在开发软件后需要后续维护更新版本,但是你不能指望使用者绝对按照的你要求来操作,所以自动更新非常重要。
android 程序自动更新,可以加在任何android应用里
Android 自动更新,使程序自动更新,保持最新版本
Android 应用程序自动更新源码.zip
应用程序自动更新源码.zip
Android自动更新源码,调试通过,可用。
很多的Android应用都具有版本检测和自动更新的功能,用户一键就可以完成软件的升级和更新。Android应用程序的升级本质上是利用了Linux系统的软件包管理和安装机制,而对于上层这一功能的开发来说很容易,只需要我们...
Android应用从服务器获取新版本并更新的小DEMO,主要流程为,获取服务器侧版本信息,获取当前应用版本信息,比较,需要更新则从服务器下载安装包,安装,结束流程,若无需更新直接结束流程
用于android程序自动检测更新,里面包含检测是否有更新,有更新可以选择更新
Android apk发布到google play上检测google play的新版本,并且下载更新
Android程序研发源码Android 应用程序自动更新源码.zip
网上找了一堆Delphi安卓APP程序自动升级方法都大多不太好用,有的需要配置WEB服务器,有的控制下载和升级管理麻烦,于是综合网上资料,根据项目需要整理了一个代码单元,可以直接调用,测试环境Delphi XE 10.3
android程序的自动更新 和 基于GPS定位的轨迹存储,开发环境:android4.0+
实现 android7、8 以上版本自动更新app 程序,仅供参考。
根据服务器返回的版本信息检测并自动下载更新程序