Android开发之应用程序更新实现
2017-04-30 18:10
204 查看
近期给项目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地址一定要写你server所在的电脑的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
}
}
然后就能够依据与获取到的数据相比較而且下载更新了。
其它的做法和这个类似,只是此种方式比較简单一些,也是最频繁的使用方式。
个人辛勤劳动成果。如有转载,请注明出处,谢谢!
既然是更新,那么一定是要联网和下载的。所以联网和存储訪问权限时一定要有的:
<!-- 权限申请 -->
<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地址一定要写你server所在的电脑的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开发之应用程序更新实现
- android开发——应用程序启动前的闪屏实现
- Android 3D游戏开发(高级篇)——Opengl ES游戏引擎实现(更新完毕)
- Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
- 【实用篇】Android之应用程序实现自动更新功能
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
- Android应用程序开发教程 - 实现一个登录对话框
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- Android应用程序通过与服务器对比实现自动更新
- Android开发教程——应用程序之间如何实现沟通
- Android应用程序入门 推箱子游戏开发(一) surfaceView 实现动画效果
- Android开发——利用Cursor+CursorAdapter实现界面实时更新
- Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
- Android应用程序开发教程:实现一个功能比较完善的登录对话框
- 【Android应用开发】-(18)静默方式实现批量安装卸载应用程序
- [置顶] 【Android应用开发】-(18)静默方式实现批量安装卸载应用程序
- 【Android应用开发】-(18)静默方式实现批量安装卸载应用程序
- Android开发教程:如何让应用程序自动更新的问题?
- android应用程序设计与实现相关资源汇总,不断更新中……