Android 自动更新功能

来源:互联网 发布:村淘宝服务站怎么赚钱 编辑:程序博客网 时间:2024/05/16 02:22
注意点1:运行时Installation error INSTALL_FAILED_VERSION_DOWNGRADE错误:主要原因是机器上的版本信息比AndroidManifest.xmlversionCode设置的大,将versionCode设置为比 当前的大或者卸载程序重新安装。
注意点2:添加权限 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
注意点3:服务器端设置,http://blog.csdn.net/wuwo333/article/details/7971600 第三条:
服务端主要是建立一个网址供用户下载apk。在IIS上新建网站
version.xml格式
<update>
<version>12</version>
<name>BoilerAndroid_1.1</name>
<url>http://192.168.0.33:8011/boilerandroid.apk</url>

</update>

在这里有可能会遇见一个问题,访问url路径时IIS报错。主要是因为IIS并不认识apk,不知道如何处理。

这里我们在IIS中新增安卓程序的MIME类型,来使apk支持下载。
在“IIS管理器”中查看所建立的网站——MIME类型——添加。
文件扩展名:.apk
MIME类型:application/vnd.android.package-archive
注意点4:程序使用的demo为http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html
需要修改UpdateManager类中 getVersionCode方法 .getPackageInfo 修改包路径与AndroidManifest.xml一致

在src下加入version.xml用来获取下载服务器的地址。

注意点5:在Android4.0以上 在onCreate里加入
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());

修改一个方法:/**
* �?查软件是否有更新版本
*
* @return
*/
private boolean isUpdate()
{
int versionCode = getVersionCode(mContext);
int serviceCode=getServiceVersion();
if (serviceCode > versionCode) {
return true;
}
return false;
}
添加一个方法:
//获取服务器版本号
private int getServiceVersion() {
int serviceCode = 0;
try{
URL url=new URL(mXmlPath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
InputStream inStream = conn.getInputStream();
ParseXmlService service = new ParseXmlService();
mHashMap = service.parseXml(inStream);
serviceCode = Integer.valueOf(mHashMap.get("version"));
return serviceCode;
}catch(Exception e){
e.printStackTrace();
}
return serviceCode;
}

UpdateSoftDemo.rar

0 0