`
LoveZhou
  • 浏览: 270171 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

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


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

在正确url地址上下载下来apk后,先判断下载下来的文件类型,然后通过apk安装器即可安装
截图:

  • 大小: 21.4 KB
  • 大小: 27.6 KB
2
1
分享到:
评论
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 A/B分区OTA系统升级应用层调用UpdateEngine Apk源码

    最近在搞 Android A/B 分区 OTA 升级,开始以为挺简单的一个事,没想到折腾了几天,还好终于搞定!代码调用其实就那么点,但是参数以及权限之类很关键,搬砖过来走不通,我就是卡了2天,一些莫名的错误,没法定位。...

    安卓手机打包已安装的程序生成apk文件

    老铁们有没有手机APP升级后发觉没升级前好用,想恢复到升级前又苦于找不到原始安装包。有了这个神器,就可以在升级前先备份老版本的app,升级后发觉不爽,可以随时恢复回去,爽歪歪哟,嘿嘿嘿嘿

    强大的Flutter App升级功能

    注意:无特殊说明,Flutter版本及Dart版本如下: ...Android平台,既可以通过跳转到应用市场进行升级,也可以下载apk包升级。 从强制性来说可以分别强制升级和非强制升级: 强制升级:就是用户必须升级

    apk命令 下载包管理工具

    Android应用程序包(APK)是android操作系统使用的应用程序包文件格式,用于分发和安装移动应用及中间件。 一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成一个android系统所能...

    ANDROID apk 反编译工具大全(已升级)

    ANDROID apk 反编译工具包 包含 Gapktool,DoAPK_Beta1.0和Dodo_APKToolsAPK安装包自由修改工具 推荐使用 Gapktool进行反编译,反编译出来的源码相对完整,方便初学者对某些程序的功能实现过程学习参考

    开发工具:eclipse 黑色主题 + Android反编译工具包(升级)+ Postman

    Android反编译工具包是用于将已编译的Android应用程序(APK文件)转换回源代码的工具。升级后的工具包通常包含最新的反编译技术和功能,以应对新版本的Android系统和安全机制。 其中,dex2jar是一个常用的工具,...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    Android反编译工具包(升级)

    可以实现android程序apk文件的反编译,可以参考使用

    ADB-Backup-APK-Injection:Android ADB备份APK注入POC

    Android操作系统通过ADB实用程序提供了已安装软件包的备份/还原机制。 默认情况下,将对应用程序进行完整备份,包括/ data中存储的私有文件,但是可以通过实现类来自定义此行为。 这样,应用程序可以使用自定义文件...

    2010年谢彦的android笔记

    1.9 安装和卸载应用程序(apk包) 23 1.10 系统升级 26 1.11 android系统支持app2sd(修改boot.img) 27 2 基本概念 30 2.1 Android组件 31 2.1.1 基本组件 31 2.1.2 组件间的通讯 32 2.1.3 intent使用方法 33 2.2 ...

    Android-gradle-play-publisher.zip

    它可以做任何事情,从构建、上传、然后升级应用程序包或apk到发布应用程序列表和其他元数据。,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性...

    AndroidChromium:来自Chrome开放项目的Android版本的Chrome浏览器

    如果您使用的是AndroidStudio 2.0以上版本并打开即时运行功能,建议关闭后进行调试(即时运行会在chrome提供程序上下文引用错误的应用程序上进行修改) 屏幕截图 升级Chromium内核步骤如下 制备 参考和其他教程编译...

    android笔记.rar

    1.9 安装和卸载应用程序(apk包) ... ...23 1.10 系统升级... ..26 1.11 android系统支持app2sd(修改boot.img) ... ..27 2 基本概念... ...30 2.1 Android组件 ... ..31 2.1.1 基本组件... .31 2.1.2 组件间的...

    安卓DSA无蓝牙提示修改版

    Android DSA 官方使用说明 (转自...Android DSA新数据采用在线升级方式,每星期五下午我们会提供最新数据升级,如果您的设备已经打开WIFI或GPRS上网,运行DSA时将会自动检测新数据,并弹出升级提示。4 A' s# z" D3 z

    WaveEditor Pro 1.71.apk

    但是,如果您喜欢这个应用程序,请购买升级版本以充分利用它的潜力。这可以通过In App Billing在应用程序内完成,并确保将来的支持以及后续版本中的新功能。 升级的好处如下: •删除所有广告 •解锁所有效果 权限...

    \windowsinstaller

    安装 BlueStacks_HD.msi 这是一款android模拟器。(提示升级可忽略)  2.运行 伪装微信地理位置.apk 电脑版必须要运行这个获取地址位置“查看附近的人”“摇一摇”功能需要。  3.运行 微信.apk 这是微信官方包  ...

    动网论坛WAP升级版带android客户端

    动网论坛WAP升级版带android客户端 源码说明: 安装前,请备份您的站点论坛程序,方便恢复 本次发布包含3个功能如下: 1&gt;: wap手机版升级优化程序 将 压缩包 wap 文件包上传覆盖到论坛根目录,完成后,在目录 ...

    SafeInCloud Pro 19.1.2.apk

    ◆Android Wear应用程序 ◆密码强度分析 ◆密码生成器 ◆浏览器集成 ◆免费桌面应用程序(Windows,Mac) ◆自动数据导入 ◆跨平台 易于使用 自己动手,享受易于使用但功能强大的用户界面。 材料设计 SafeInCloud...

Global site tag (gtag.js) - Google Analytics