android 软件更新代码

系统 1948 0

http://lovezhou.iteye.com/blog/932847

 

 

 

     应用软件经常会因为功能的增加而升级,升级经常是在客户端给用户升级的提示,然后用户下载最新的apk程序包,软件升级过程大多数需要在线完成。 
      android 在线安装apk程序包,主要用到系统自带的apk安装器进行安装。用到系统自带的apk安装器安装apk包,首先需要在配置文件中加入权限声明 
Java代码   收藏代码
  1. <uses-permission android:name= "android.permission.INTERNET" ></uses-permission>  
  2. <uses-permission android:name= "android.permission.INSTALL_PACKAGES" ></uses-permission>  
  3. <uses-permission android:name= "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ></uses-permission>  
  4. <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission  


调用系统apk安装器的主要代码是: 
Java代码   收藏代码
  1. Intent intent =  new  Intent();  
  2.     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  3.     intent.setAction(android.content.Intent.ACTION_VIEW);  
  4.       
  5.      /* 调用getMIMEType()来取得MimeType */   
  6.     String type = getMIMEType(f);  
  7.      /* 设置intent的file与MimeType */   
  8.     intent.setDataAndType(Uri.fromFile(f),type);  
  9.     startActivity(intent);   

在正确url地址上下载下来apk后,先判断下载下来的文件类型,然后通过apk安装器即可安装 
截图: 
android 软件更新代码  
android 软件更新代码
分享到:   
评论
21 楼  335062868  2012-01-18    引用
LoveZhou 写道
335062868 写道
请问楼主,为什么我会出现解析包时出错呢?知道是哪里出的问题吗?

很有可能是apk有问题,可以单独安装apk试试,看能否成功

单独安装可以安装,这个我试过了!
20 楼  LoveZhou  2012-01-16    引用
335062868 写道
请问楼主,为什么我会出现解析包时出错呢?知道是哪里出的问题吗?

很有可能是apk有问题,可以单独安装apk试试,看能否成功
19 楼  335062868  2012-01-16    引用
请问楼主,为什么我会出现解析包时出错呢?知道是哪里出的问题吗?
18 楼  LoveZhou  2011-09-01    引用
lcfeng1982 写道
请问如何升级某个文件呢?比如我的软件用到了数据库,我想在升级的时候保留数据库,这样升级后原有的数据库还可以照常使用。这个时候你提供的这个方法还能用吗?

这种是覆盖安装,覆盖安装apk的时候,应该不会删掉数据库文件,你可以试一下,没测试过这个,不敢肯定,不好意思哈
17 楼  lcfeng1982  2011-09-01    引用
请问如何升级某个文件呢?比如我的软件用到了数据库,我想在升级的时候保留数据库,这样升级后原有的数据库还可以照常使用。这个时候你提供的这个方法还能用吗?
16 楼  LoveZhou  2011-07-21    引用
glaivelee-michele 写道
楼主, 这个方案给我启发很大. 有个问题: 如何安装时不需要确认一下!!!就是说在楼主这篇文章中的最后一张图片里 安装程序询问用户是否要安装该应用程序? 用户必须确认一下才能安装?  如何省掉这一步? 请楼主不吝赐教

这个是调用系统的安装器,所以都要弹出这个界面,如果调用系统的,暂时还不知道怎么跳过这一步,Android安装应用时,都会给用户提示
15 楼  LoveZhou  2011-07-21    引用
xiaopei0714 写道
嗯,目前看来只能这样了,我一直想要用非手动的方式,可惜没有好法子,从apk上读取版本号,多一般的java程序不好弄,看来只能采取这种办法了

有好的方法再一起分享
14 楼  xiaopei0714  2011-07-21    引用
嗯,目前看来只能这样了,我一直想要用非手动的方式,可惜没有好法子,从apk上读取版本号,多一般的java程序不好弄,看来只能采取这种办法了
13 楼  glaivelee-michele  2011-07-21    引用
楼主, 这个方案给我启发很大. 有个问题: 如何安装时不需要确认一下!!!就是说在楼主这篇文章中的最后一张图片里 安装程序询问用户是否要安装该应用程序? 用户必须确认一下才能安装?  如何省掉这一步? 请楼主不吝赐教
12 楼  LoveZhou  2011-07-21    引用
LoveZhou 写道
xiaopei0714 写道
LoveZhou 写道
xiaopei0714 写道
那这样子的话,server端是怎样告诉client最新版本号,提供一个接口??那样子的话server该怎么获得最新版本号然后返回client,难道每次更新版本之后,server都要改代码????我是纠结了,拜托拜托不吝赐教

把升级后的apk放到server上,客户端可以每次读取server的一个地址,从上面解析是否需要升级,如果需要,再到指定的url上去下载apk在线安装。
exp:server 的 url 中带 update=1字段,客户端每次请求这个url,可以改变update的值,双方约定好


那这样是不是意味着server一旦发布一个新的版本,就需要更新一次update值?

恩,一个参数,不知道有没有更好的办法,我现在只想到了这个


不是更新updata的值,可以约定好,比如说只有是3的时候更新,就可以了
11 楼  LoveZhou  2011-07-20    引用
xiaopei0714 写道
LoveZhou 写道
xiaopei0714 写道
那这样子的话,server端是怎样告诉client最新版本号,提供一个接口??那样子的话server该怎么获得最新版本号然后返回client,难道每次更新版本之后,server都要改代码????我是纠结了,拜托拜托不吝赐教

把升级后的apk放到server上,客户端可以每次读取server的一个地址,从上面解析是否需要升级,如果需要,再到指定的url上去下载apk在线安装。 
exp:server 的 url 中带 update=1字段,客户端每次请求这个url,可以改变update的值,双方约定好


那这样是不是意味着server一旦发布一个新的版本,就需要更新一次update值?

恩,一个参数,不知道有没有更好的办法,我现在只想到了这个
10 楼  xiaopei0714  2011-07-20    引用
LoveZhou 写道
xiaopei0714 写道
那这样子的话,server端是怎样告诉client最新版本号,提供一个接口??那样子的话server该怎么获得最新版本号然后返回client,难道每次更新版本之后,server都要改代码????我是纠结了,拜托拜托不吝赐教

把升级后的apk放到server上,客户端可以每次读取server的一个地址,从上面解析是否需要升级,如果需要,再到指定的url上去下载apk在线安装。 
exp:server 的 url 中带 update=1字段,客户端每次请求这个url,可以改变update的值,双方约定好


那这样是不是意味着server一旦发布一个新的版本,就需要更新一次update值?
9 楼  LoveZhou  2011-07-20    引用
xiaopei0714 写道
那这样子的话,server端是怎样告诉client最新版本号,提供一个接口??那样子的话server该怎么获得最新版本号然后返回client,难道每次更新版本之后,server都要改代码????我是纠结了,拜托拜托不吝赐教

把升级后的apk放到server上,客户端可以每次读取server的一个地址,从上面解析是否需要升级,如果需要,再到指定的url上去下载apk在线安装。
exp:server 的 url 中带 update=1字段,客户端每次请求这个url,可以改变update的值,双方约定好
8 楼  xiaopei0714  2011-07-20    引用
那这样子的话,server端是怎样告诉client最新版本号,提供一个接口??那样子的话server该怎么获得最新版本号然后返回client,难道每次更新版本之后,server都要改代码????我是纠结了,拜托拜托不吝赐教
7 楼  LoveZhou  2011-07-19    引用
xiaopei0714 写道
LoveZhou 写道
xiaopei0714 写道
感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式

apk签名要相同,否则无法覆盖安装


嗯,谢谢,你这里的签名相同,指的是私钥???还是别的什么?

key
6 楼  xiaopei0714  2011-07-19    引用
LoveZhou 写道
xiaopei0714 写道
感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式

apk签名要相同,否则无法覆盖安装


嗯,谢谢,你这里的签名相同,指的是私钥???还是别的什么?
5 楼  LoveZhou  2011-07-18    引用
xiaopei0714 写道
感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式

apk签名要相同,否则无法覆盖安装
4 楼  LoveZhou  2011-07-18    引用
xiaopei0714 写道
感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式

可以啊,当时我们就是server和client约定的
3 楼  xiaopei0714  2011-07-18    引用
感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式
2 楼  LoveZhou  2011-06-16    引用
sww0130 写道
有没有办法判断apk是最新的而不是旧的?

暂时没找到办法判断,我们之前做的是把新的apk直接放到url地址上,下载

android 软件更新代码


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论