Android开发之应用程序更新实现

最近给项目app做升级,对Android应用程序更新稍有研究,分享一下我的心得。

既然是更新,那么一定是要联网和下载的,所以联网和存储访问权限时一定要有的:

<!-- 权限申请 -->

<uses-permission android:name="android.permission.INTERNET" />
<!-- 联网权限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 存储权限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

可以用xml的方式和数据库、php等方式检测升级版本

XML:

<?xml version="1.0" encoding="utf-8"?>

<update>

<version>2.0<ersion>

<description>这里写一些这个版本的特点</description>

<apkurl>填写应用下载下载地址</apkurl>

<!--这里的ip地址一定要写你服务器所在的电脑的ip地址,我们会在Security这个目录下面放置一下new.apk的,用来更新的-->

</update>

匹配一下:

public class UpdateInfoParser {

public static UpdateInfo getUpdateInfo(InputStream is) throws Exception {

UpdateInfo info = new UpdateInfo();

XmlPullParser xmlPullParser = Xml.newPullParser();

xmlPullParser.setInput(is, "utf-8");

int type = xmlPullParser.getEventType();

while (type != XmlPullParser.END_DOCUMENT) {

switch (type) {

case XmlPullParser.START_TAG:

if (xmlPullParser.getName().equals("version")) {

info.setVersion(xmlPullParser.nextText());

} else if (xmlPullParser.getName().equals("description")) {

info.setDescription(xmlPullParser.nextText());

} else if (xmlPullParser.getName().equals("apkurl")) {

info.setUrl(xmlPullParser.nextText());

}

break;

default:

break;

}

type = xmlPullParser.next();

}

return info;

}

}

HTTP请求:

public class UpdateInfoService {

private Context context;

public UpdateInfoService(Context context) {

this.context = context;

}

public UpdateInfo getUpdateInfo(int urlId) throws Exception {

String path = context.getResources().getString(urlId);// 拿到config.xml里面存放的地址

URL url = new URL(path);

HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();// 开启一个http链接

httpURLConnection.setConnectTimeout(5000);// 设置链接的超时时间,现在为5秒

httpURLConnection.setRequestMethod("GET");// 设置请求的方式

InputStream is = httpURLConnection.getInputStream();// 拿到一个输入流。里面包涵了update.xml的信息

return UpdateInfoParser.getUpdateInfo(is);// 解析xml

}

}

然后就可以根据与获取到的数据相比较并且下载更新了。

其他的做法和这个类似,不过此种方式比较简单一些,也是最频繁的使用方式。

个人辛勤劳动成果,如有转载,请注明出处,谢谢!

Android开发之应用程序更新实现

时间: 05-14

Android开发之应用程序更新实现的相关文章

Android 开发的QQ程序源码

Android 开发的QQ程序源码 网上下载的一款Android 开发的QQ程序源码,其中有大量的注释.项目中有错误不能直接运行,有兴趣的朋友可以下载看下. 下载地址:http://www.devstore.cn/code/info/841.html  运行截图:

android开发开源宝贝——持续更新。。。

2016年11月11日更新 http://www.apkbus.com/forum-417-1.html http://p.codekk.com/detail/Android/hejunlin2013/LivePlayback www.codekk.com https://github.com/Trinea/android-open-project Android 开源项目分类汇总 我们的微信公众号:codekk.二维码如下: 专注于 Android 开源分享.源码解析.框架设计.Android

[android] 手机卫士应用程序更新和签名

弹出升级对话框 获取AlertDialog.Builder对象,通过new出来 调用Builder对象的setTitle()方法,参数:文本 调用Builder对象的setMessage()方法,参数:文本,json传回来的信息 调用Builder对象的setPositiveButton()方法,设置确定按钮 参数:文本,OnClickListener对象,匿名内部类实现,重写onClick()方法, 方法里面下载APK,替换安装 调用Builder对象的setNegativeButton()方

Android开发eclipse运行程序时报timeout的解决方法

eclipse开发Android程序时,忽然莫名其妙报这个错,之前还好好的.忽然就不行了. Failed to install xxx.apk on device~~~: timeout 尝试过手机里删除应用程序.手机重启.重启adb.重启eclipse.重启电脑后,还是不行. 尝试了半天,找到了方案: eclipse-->window-->Preferences-->Android-->DDMS-->ADB connection time out(ms) 里面的值默认为50

Android 开发 voip/sip 程序

首先说明一下相关概念,voip 和Sip ,voip的意思是网络电话,会话发起协议(SIP)是建立VOIP连接的IETF标准.SIP是一种应用层协议,用于和一个或多个参与者创建.修改和终止会话.SIP的结构与HTTP(客户-服务器协议)相似.客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机发送一个响应). 简单点就是voip是网络电话,而sip则是网络电话使用的协议.别的信息就请各位读者自己百度了.至于Android voip程序也就是写一个程序用于实现网络电话功能. 注意:在本篇博

Android开发之在程序右上角添加菜单选项

在res-->menu-->main.xml中定义菜单的选项 <menu xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+id/item1"        android:title="主页">    </item>    <item        androi

android开发的应用程序,用模拟器可以访问,但是安装到手机上却不行

============问题描述============ 开发一个与数据库返回数据的程序,服务端是用servlet写的,用模拟器测试时,是能够访问的,且能返回数据,但是把程序安装到手机上,却不能访问服务端了,请问是为什么啊 ============解决方案1============ 肯定的啊,你手机的ip和你模拟器的不一样!你模拟器用的是和电脑默认的一个地址,你修改下手机的ip,改成你访问路径的那个地址试试. ============解决方案2============ 服务端是你本机吗? 如果是

(三十七)Android开发中修改程序字体

1.在Android XML文件中设置系统默认的字体 可以在XML文件中采用android:typeface设置字体,例如android:typeface=”monospace”.在这里例子中我们在Activity中对android:text=”Hello, World! 您好”分别进行了四种显示方式,依次为“Sans”,“serif”,“monospace”和系统缺省方式(经试验缺省采用采用sans).英文字体有差异,貌似中文字体没有差异.XML文件如下: <?xml version=“1.0

写给 Android 开发的小程序布局指南,Flex 布局!

一.序 Hi,大家好,我是承香墨影! 最近在做小程序,验证一些方向,开发效率确实很快,就是各种微信的审核有点费劲,但是总归是有办法解决的. 想要开发一款小程序,其实和我们正常写一款 App 类似,你需要有精美的前端布局,并且同时还需要处理和前端 UI 组件的交互以及它们背后的逻辑. 最近会分享一些关于小程序的内容(不保证,想到哪里写到哪里),今天先说说接触小程序第一步:布局. 如果有前端经验的话,小程序是非常容易上手的,而对于新手,第一步当然是阅读小程序的官方文档,不过之后你马上就要面临布局的问