版本更新说明
这里有调用 UpdateService 启动服务检查下载安装包等
- 文件下载,下完后写入到 sdcard
- 如何在通知栏上显示下载进度
- 下载完毕自动安装
- 如何判断是否有新版本
版本更新的主类
package com.wei.update;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.wei.util.MyApplication;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Handler;
/**
* 版本更新主类,这里有调用 UpdateService 启动服务检查下载安装包等
*/
public class UpdateManager {
private static String packageName; // = "com.yipinzhe"; // 应用的包名
private static String jsonUrl = "version.txt";
;
;
Context mContext;
HashMap<String, String> mHashMap;
versionCode, isNew;
{
.mContext = context;
packageName = context.getPackageName();
jsonUrl = MyApplication.site + jsonUrl;
xmlUrl = MyApplication.site + xmlUrl;
checkVersion();
}
() {
{
(msg.what == ) {
();
message.append(mHashMap.get().replace(, ));
AlertDialog. .Builder(mContext);
alert.setTitle()
.setMessage(message.toString())
.setPositiveButton(,
.OnClickListener() {
{
System.out.println();
(
mContext, UpdateService.class);
mContext.startService(updateIntent);
}
})
.setNegativeButton(,
.OnClickListener() {
{
dialog.dismiss();
}
});
alert.create().show();
}
}
};
{
{
versionCode = mContext.getPackageManager().getPackageInfo(
packageName, ).versionCode;
} (NameNotFoundException e) {
e.printStackTrace();
}
() {
{
;
;
{
inStream = UpdateManager.class.getClassLoader().getResourceAsStream();
inStream = (xmlUrl).openConnection().getInputStream();
(inStream != )
mHashMap = parseXml(inStream);
} (Exception e1) {
e1.printStackTrace();
}
(mHashMap != ) {
Integer.valueOf(mHashMap.get());
(serviceCode > versionCode) {
isNew = ;
}
}
checkHandler.sendEmptyMessage(isNew);
}
}.start();
}
HashMap<String, String> {
HashMap<String, String> hashMap = <String, String>();
{
(str);
hashMap.put(, obj.getString());
hashMap.put(, obj.getString());
hashMap.put(, obj.getString());
hashMap.put(, obj.getString());
} (JSONException e) {
e.printStackTrace();
}
hashMap;
}
HashMap<String, String> {
HashMap<String, String> hashMap = <String, String>();
{
XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(inputStream, );
parser.getEventType();
(eventCode != XmlPullParser.END_DOCUMENT) {
System.out.println();
(eventCode) {
XmlPullParser.START_DOCUMENT:
System.out.println();
;
XmlPullParser.START_TAG:
(.equals(parser.getName())) {
hashMap.put(parser.getName(), parser.nextText());
} (.equals(parser.getName())) {
hashMap.put(parser.getName(), parser.nextText());
} (.equals(parser.getName())) {
hashMap.put(parser.getName(), parser.nextText());
} (.equals(parser.getName())) {
hashMap.put(parser.getName(), parser.nextText());
}
;
XmlPullParser.END_TAG:
;
}
eventCode = parser.next();
}
System.out.println(hashMap.get());
} (Exception e) {
e.printStackTrace();
}
hashMap;
}
}


