資源簡介
由于Android項目開源所致,市面上出現了N多安卓軟件市場。為了讓我們開發的軟件有更多的用戶使用,我們需要向N多市場發布,軟件升級后,我們也必須到安卓市場上進行更新,給我們增加了工作量。因此我們有必要給我們的Android應用增加自動更新的功能。
既然實現自動更新,我們首先必須讓我們的應用知道是否存在新版本的軟件,因此我們可以在自己的網站上放置配置文件,存放軟件的版本信息:
<update> <version>2</version> <name>baidu_xinwen_1.1.0</name> <url>http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk</url> </update>
在這里我使用的是XML文件,方便讀取。由于XML文件內容比較少,因此可通過DOM方式進行文件的解析
public class ParseXmlService { public HashMap<String, String> parseXml(InputStream inStream) throws Exception { HashMap<String, String> hashMap = new HashMap<String, String>(); // 實例化一個文檔構建器工廠 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 通過文檔構建器工廠獲取一個文檔構建器 DocumentBuilder builder = factory.newDocumentBuilder(); // 通過文檔通過文檔構建器構建一個文檔實例 Document document = builder.parse(inStream); //獲取XML文件根節點 Element root = document.getDocumentElement(); //獲得所有子節點 NodeList childNodes = root.getChildNodes(); for (int j = 0; j < childNodes.getLength(); j ) { //遍歷子節點 Node childNode = (Node) childNodes.item(j); if (childNode.getNodeType() == Node.ELEMENT_NODE) { Element childElement = (Element) childNode; //版本號 if ("version".equals(childElement.getNodeName())) { hashMap.put("version",childElement.getFirstChild().getNodeValue()); } //軟件名稱 else if (("name".equals(childElement.getNodeName()))) { hashMap.put("name",childElement.getFirstChild().getNodeValue()); } //下載地址 else if (("url".equals(childElement.getNodeName()))) { hashMap.put("url",childElement.getFirstChild().getNodeValue()); } } } return hashMap; } }
通過parseXml()方法,我們可以獲取服務器上應用的版本、文件名以及下載地址。緊接著我們就需要獲取到我們手機上應用的版本信息:
/**
* 獲取軟件版本號
*
* @param context
* @return
*/
private int getVersionCode(Context context)
{
int versionCode = 0;
try
{
// 獲取軟件版本號,
versionCode = context.getPackageManager().getPackageInfo("com.szy.update", 0).versionCode;
} catch (NameNotFoundException e)
{
e.printStackTrace();
}
return versionCode;
}
通過該方法我們獲取到的versionCode對應AndroidManifest.xml下android:versionCode。android:versionCode和android:versionName兩個屬性分別表示版本號,版本名稱。versionCode是整數型,而versionName是字符串。由于versionName是給用戶看的,不太容易比較大小,升級檢查時,就可以檢查versionCode。把獲取到的手機上應用版本與服務器端的版本進行比較,應用就可以判斷處是否需要更新軟件。
處理流程
代碼片段和文件信息
/*?AUTO-GENERATED?FILE.??DO?NOT?MODIFY.
?*
?*?This?class?was?automatically?generated?by?the
?*?aapt?tool?from?the?resource?data?it?found.??It
?*?should?not?be?modified?by?hand.
?*/
package?com.szy.update;
public?final?class?R?{
????public?static?final?class?attr?{
????}
????public?static?final?class?drawable?{
????????public?static?final?int?icon=0x7f020000;
????}
????public?static?final?class?id?{
????????public?static?final?int?btnUpdate=0x7f050000;
????????public?static?final?int?update_progress=0x7f050001;
????}
????public?static?final?class?layout?{
????????public?static?final?int?main=0x7f030000;
????????public?static?final?int?softupdate_progress=0x7f030001;
????}
????public?static?final?class?string?{
????????public?static?final?int?app_name=0x7f040001;
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????280??2012-04-27?18:22??UpdateSoftDemo\.classpath
?????文件????????850??2012-04-27?18:22??UpdateSoftDemo\.project
?????文件????????117??2012-04-27?19:06??UpdateSoftDemo\.settings\org.eclipse.core.resources.prefs
?????文件????????911??2012-04-27?19:50??UpdateSoftDemo\AndroidManifest.xm
?????文件??????12496??2012-04-27?21:05??UpdateSoftDemo\bin\classes.dex
?????文件????????925??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\MainActivity$1.class
?????文件????????940??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\MainActivity.class
?????文件???????2386??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\Parsexm
?????文件????????328??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\R$attr.class
?????文件????????388??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\R$drawable.class
?????文件????????414??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\R$id.class
?????文件????????425??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\R$layout.class
?????文件????????699??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\R$string.class
?????文件????????503??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\R.class
?????文件???????1011??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\UpdateManager$1.class
?????文件????????884??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\UpdateManager$2.class
?????文件????????852??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\UpdateManager$3.class
?????文件????????925??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\UpdateManager$4.class
?????文件???????3491??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\UpdateManager$downloadApkThread.class
?????文件???????6973??2012-04-27?21:05??UpdateSoftDemo\bin\com\szy\update\UpdateManager.class
?????文件??????11740??2012-04-27?21:05??UpdateSoftDemo\bin\resources.ap_
?????文件??????19997??2012-04-27?21:05??UpdateSoftDemo\bin\UpdateSoftDemo.apk
?????文件????????159??2012-04-27?19:55??UpdateSoftDemo\bin\version.xm
?????文件????????362??2012-04-27?18:22??UpdateSoftDemo\default.properties
?????文件???????1298??2012-04-27?19:50??UpdateSoftDemo\gen\com\szy\update\R.java
?????文件???????1159??2012-04-27?18:22??UpdateSoftDemo\proguard.cfg
?????文件???????4147??2012-04-27?18:22??UpdateSoftDemo\res\drawable-hdpi\icon.png
?????文件???????1723??2012-04-27?18:22??UpdateSoftDemo\res\drawable-ldpi\icon.png
?????文件???????2574??2012-04-27?18:22??UpdateSoftDemo\res\drawable-mdpi\icon.png
?????文件????????380??2012-04-27?18:25??UpdateSoftDemo\res\layout\main.xm
............此處省略30個文件信息
- 上一篇:android
- 下一篇:仿android市場多應用同時,通知欄通知
評論
共有 條評論