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

Android 软件在线升级,在线安装apk程序包

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


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

在正确url地址上下载下来apk后,先判断下载下来的文件类型,然后通过apk安装器即可安装
截图:
android 软件更新代码
android 软件更新代码
  • UpdateSoftWare.rar(52 KB)
  • 下载次数: 1579
  • 查看图片附件
1
1
踩 分享到: Android 抽屉类SlidingDrawer的使用| 验证数字的正则表达式集(转)
  • 2011-02-27 23:03
  • 浏览 5363
  • 评论(21)
  • 收藏
  • 分类:移动开发
  • 相关推荐
评论
21 楼 3350628682012-01-18 引用 LoveZhou 写道 335062868 写道 请问楼主,为什么我会出现解析包时出错呢?知道是哪里出的问题吗?
很有可能是apk有问题,可以单独安装apk试试,看能否成功
单独安装可以安装,这个我试过了! 20 楼 LoveZhou2012-01-16 引用 335062868 写道 请问楼主,为什么我会出现解析包时出错呢?知道是哪里出的问题吗?
很有可能是apk有问题,可以单独安装apk试试,看能否成功 19 楼 3350628682012-01-16 引用 请问楼主,为什么我会出现解析包时出错呢?知道是哪里出的问题吗? 18 楼 LoveZhou2011-09-01 引用 lcfeng1982 写道 请问如何升级某个文件呢?比如我的软件用到了数据库,我想在升级的时候保留数据库,这样升级后原有的数据库还可以照常使用。这个时候你提供的这个方法还能用吗?
这种是覆盖安装,覆盖安装apk的时候,应该不会删掉数据库文件,你可以试一下,没测试过这个,不敢肯定,不好意思哈 17 楼 lcfeng19822011-09-01 引用 请问如何升级某个文件呢?比如我的软件用到了数据库,我想在升级的时候保留数据库,这样升级后原有的数据库还可以照常使用。这个时候你提供的这个方法还能用吗? 16 楼 LoveZhou2011-07-21 引用 glaivelee-michele 写道 楼主, 这个方案给我启发很大. 有个问题: 如何安装时不需要确认一下!!!就是说在楼主这篇文章中的最后一张图片里 安装程序询问用户是否要安装该应用程序? 用户必须确认一下才能安装? 如何省掉这一步? 请楼主不吝赐教
这个是调用系统的安装器,所以都要弹出这个界面,如果调用系统的,暂时还不知道怎么跳过这一步,Android安装应用时,都会给用户提示 15 楼 LoveZhou2011-07-21 引用 xiaopei0714 写道 嗯,目前看来只能这样了,我一直想要用非手动的方式,可惜没有好法子,从apk上读取版本号,多一般的java程序不好弄,看来只能采取这种办法了
有好的方法再一起分享 14 楼 xiaopei07142011-07-21 引用 嗯,目前看来只能这样了,我一直想要用非手动的方式,可惜没有好法子,从apk上读取版本号,多一般的java程序不好弄,看来只能采取这种办法了 13 楼 glaivelee-michele2011-07-21 引用 楼主, 这个方案给我启发很大. 有个问题: 如何安装时不需要确认一下!!!就是说在楼主这篇文章中的最后一张图片里 安装程序询问用户是否要安装该应用程序? 用户必须确认一下才能安装? 如何省掉这一步? 请楼主不吝赐教 12 楼 LoveZhou2011-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 楼 LoveZhou2011-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 楼 xiaopei07142011-07-20 引用 LoveZhou 写道 xiaopei0714 写道 那这样子的话,server端是怎样告诉client最新版本号,提供一个接口??那样子的话server该怎么获得最新版本号然后返回client,难道每次更新版本之后,server都要改代码????我是纠结了,拜托拜托不吝赐教
把升级后的apk放到server上,客户端可以每次读取server的一个地址,从上面解析是否需要升级,如果需要,再到指定的url上去下载apk在线安装。
exp:server 的 url 中带 update=1字段,客户端每次请求这个url,可以改变update的值,双方约定好

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

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

嗯,谢谢,你这里的签名相同,指的是私钥???还是别的什么? 5 楼 LoveZhou2011-07-18 引用 xiaopei0714 写道 感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式
apk签名要相同,否则无法覆盖安装 4 楼 LoveZhou2011-07-18 引用 xiaopei0714 写道 感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式
可以啊,当时我们就是server和client约定的 3 楼 xiaopei07142011-07-18 引用 感谢你的代码,帮助很大,我能不能问一下,可不可以说在server提供相应的接口供client这边得到软件的最新版本号?这样子的方法实现不知道是否可以,我最近正好也在做这个,这个是不是需要client与server双方有一定的约定方式 2 楼 LoveZhou2011-06-16 引用 sww0130 写道 有没有办法判断apk是最新的而不是旧的?
暂时没找到办法判断,我们之前做的是把新的apk直接放到url地址上,下载 « 上一

更多相关文章

  1. Ubuntu 下 Android源代码下载指南
  2. Android中图像变换Matrix的原理、代码验证和应用(一)
  3. Android系列之Android开发教程代码实例
  4. 自定义SeekBarPreference控件(老外出品,直接在preferences文件中
  5. Android Activity切换动画效果详解(附源代码)
  6. Android组件化导致的代码不生效
  7. android studio开发安卓应用设置版本号

随机推荐

  1. Android(安卓)Studio V3.12环境下TV开发
  2. Android(安卓)Studio - 详解build.gradle
  3. View类及其子类
  4. 快速Android开发系列通信篇之EventBus(2)之
  5. pre-network 网络预加载框架,android网络
  6. Android中AppWidget的分析与应用:AppWidge
  7. 关于RelativeLayout的使用的注意事项
  8. Android(安卓)button, xml文件定义形状,代
  9. [Android] Android利用Coordinatorlayout
  10. Android关于Pageradapter的总结