`
LoveZhou
  • 浏览: 272757 次
  • 性别: 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 7.0下载安装APK

    本文将详细讲解如何在Android 7.0设备上下载并安装APK应用,以及在这个版本中与APK安装相关的知识点。 1. **APK 文件**:APK 是 Android 应用程序的安装包,类似于 Windows 上的 .exe 文件。它包含了应用的代码、...

    用于对Android升级包和APK进行签名

    本指南将深入探讨如何使用提供的`sign64.exe`和`sign32.exe`工具对Android升级包(APK)进行签名。 一、Android应用签名的重要性 1. **验证身份**:签名可以确认应用来自哪个开发者,帮助用户识别并信任应用。 2. ...

    android apk 在线升级原型

    APK是Android应用程序的包文件格式,包含应用的代码、资源、证书和清单文件等。当开发者发布新版本时,会生成一个新的APK文件,用户需要下载并安装这个新版本来获取更新。 **2. 版本控制** 在在线升级过程中,应用...

    Android签名工具,升级包和APK签名

    Android签名是指对APK(Android应用程序包)进行数字签名的过程,它验证了APK的来源并确保其未被篡改。每个APK在发布到Google Play或其他分发渠道之前,都需要进行签名。签名的主要目的是: 1. **身份验证**:通过...

    Android7.0下载Apk自动安装

    `PackageInstaller`是Android 7.0引入的一个新API,它允许应用程序安装新的APK包。下面是一个简单的使用示例: ```java // 创建安装参数 PackageInstaller packageInstaller = getPackageManager()....

    android 系统升级apk

    当我们提到"android 系统升级apk"时,通常指的是更新现有设备上的应用程序或操作系统版本的过程。下面将详细讨论这个过程涉及的关键知识点。 1. **APK结构**: APK文件的组成包括: - `AndroidManifest.xml`: 这...

    远程升级+安装+自动打开

    这里主要讨论的是针对Android系统的远程升级,因为提到了"apk文件",这是Android应用程序的包文件格式。 首先,我们要理解远程升级(OTA,Over-the-Air)的基本原理。它利用HTTP或HTTPS协议,将更新的apk文件从...

    android美观实用的在线升级demo

    在Android应用开发中,"在线升级"是一个非常重要的功能,它允许用户无缝地获取应用的最新版本,提高用户体验并确保应用程序的安全性和稳定性。本篇将深入解析基于Android的美观实用在线升级Demo,帮助开发者理解并...

    安卓SD卡文件管理更新信息相关-版本升级涉及到提示用户升级下载apk安装apk三部分.rar

    当应用需要进行版本升级时,通常会涉及三个关键步骤:提示用户升级、下载APK安装包以及安装APK。下面将详细解释这三个过程以及它们在安卓系统中的实现方式。 1. **提示用户升级**: 在这个阶段,应用通常会检测...

    Windows版本 Android Apk签名工具

    Windows版本的Android Apk签名工具是Android SDK工具包的一部分,它允许开发者使用密钥对APK进行签名。这个工具通常包括`jarsigner`命令行工具和`zipalign`优化工具,它们对于发布高质量的Android应用至关重要。 三...

    android使用DownloadManager自动更新,安装apk

    `DownloadManager`是Android系统服务之一,它负责在后台下载文件,特别适合处理大文件,如APK更新包。这个服务具有以下优点: 1. **后台下载**:即使用户关闭了应用,下载任务也会继续。 2. **断点续传**:如果下载...

    apk静默安装apk

    在Android系统中,APK是应用程序的包文件格式,它包含了所有必要的代码、资源和配置文件,以便在设备上运行。APK静默安装是指在用户无感知的情况下,通过编程方式自动化安装应用的过程,通常用于企业级应用部署或...

    安卓在线升级apk

    在线升级APK是指通过网络下载新版本的APK文件并自动或手动安装,以更新应用到最新版本。这种方法可以确保用户始终运行的是开发者发布的最新、最稳定的应用程序。下面将详细阐述安卓在线升级APK的相关知识点。 1. **...

    android在线升级实现源码

    "android在线升级实现源码"是一个专门用于展示如何在Android应用程序中实现带有进度条的APK在线升级功能的示例代码。这个源码项目名为"ApkLoadDemo",提供了完整的流程和逻辑,供开发者参考学习。 首先,我们需要...

    Android自动在线升级完整版 服务器为Tomcat

    标题中的"Android自动在线升级完整版 服务器为Tomcat"意味着我们将使用开源的Web服务器软件Tomcat来搭建服务器环境。Tomcat是一个轻量级的Java应用服务器,能够处理HTTP协议,适合小型应用或作为测试环境。 步骤...

    Android2.2自带apk安装器源码

    在Android操作系统中,`PackageInstaller`是核心组件之一,它负责处理APK应用的安装、升级和卸载等任务。这个组件是Android系统的核心服务,它使得用户可以通过各种方式(如通过Google Play或其他第三方市场、通过...

    Delphi XE android 自动 在线更新升级APP,然后自动安装的代码实现

    在本文中,我们将深入探讨如何使用Delphi XE在Android平台上实现APP的自动在线更新与升级功能。Delphi XE是一款强大的集成开发环境(IDE),它支持跨平台应用程序开发,包括针对Android系统的应用。实现自动在线更新...

    Android 备份(提取)apk

    在Android系统中,APK文件是应用程序的安装包,相当于iOS中的IPA文件。APK包含了一个应用的所有资源、代码和元数据,用户可以通过安装APK来运行应用。本篇文章将详细探讨如何进行Android备份(提取)APK的操作,以及...

    android app自动升级demo

    在Android应用开发中,自动升级功能是一个非常重要的组成部分,它能确保用户始终使用最新、最安全的软件版本。"android app自动升级demo"是一个实践示例,它演示了如何实现这个功能。以下将详细讲解自动升级的核心...

    Android A/B分区OTA系统升级应用层调用UpdateEngine Apk源码

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

Global site tag (gtag.js) - Google Analytics