我个人用的是友盟提供的自动更新组件,因此在这里只描述如何实用友盟提供的组件来完成程序的自动更新,步骤如下:

1.登录友盟官网,点击注册一个友盟账号。

2.注册成功后将会自动进入到添加新应用界面,选择添加你的应用,建立成功后,可以获得该App的AppKey(重要标识,请保存),以及最新的开发指南和SDK文件。

3.在http://www.umeng.com/component_social点击上方的自动更新后选择示例,在弹出来的页面选择Android Demo App,点击Android组件SDK下载,在弹出来的界面中勾选自动更新并完成下载,下载的SDK中包含开发文档,demo程序和jar包(libs、res文件夹下的内容为自动更新所需要的)。

4.将libs文件夹下的jar包拷贝到项目对应的文件夹下,并右键单击umeng_sdk.jar选择Built Path→Add to Build Path将jar包导入。

5.将res文件夹下的内容拷贝到项目对应的文件夹下,其中values-zh为新增文件夹,直接拷贝进去即可。

6.在AndroidManifest.xml中添加如下代码:

①.在AndroidManifest.xml中的Application标签内添加

<meta-data

android:name="UMENG_APPKEY"

android:value="放入你申请的AppKey" >

</meta-data>

<meta-data

android:name="UMENG_CHANNEL"

android:value="UMENG_CHANNEL" >

</meta-data>

<service

android:name="com.umeng.common.net.DownloadingService"

android:exported="true"

android:process=":DownloadingService" >

</service>

<activity
android:name="com.umeng.update.UpdateDialogActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>

②.在AndroidManifest.xml中为项目添加如下权限:

<!-- 友盟Start -->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
 <!-- 友盟End -->
    <!-- Permission for Unit Test -->
    <uses-permission android:name="android.permission.GET_TASKS" />

META-DATA 用途
UMENG_APPKEY 用来定位该应用程序的唯一性。
UMENG_CHANNEL 用来标注应用推广渠道,区分新用户的来源来查看统计,您可以使用20位以内的英文和数字为渠道定名,替换value中的"Channel ID"。详见渠道统计。
权限 用途
INTERNET(必须) 允许应用程序联网,以便向我们的服务器端发送数据。
READ_PHONE_STATE(必须) 获取用户手机的IMEI,用来唯一的标识用户。(如果您的应用会运行在无法读取IMEI的平板上,我们会将mac地址作为用户的唯一标识,请添加权限: android.permission.ACCESS_WIFI_STATE )
ACCESS_NETWORK_STATE 检测网络状态,友盟SDK 1.6版本新增权限。
READ_LOGS 如果您想获得客户端crash的报告, 需要添加这个权限。具体见【使用错误报告】。
WRITE_EXTERNAL_STORAGE 如果您使用了友盟自动更新提醒功能,需添加这个权限,为了将更新的APK临时存在SD卡里。

7.在Activity的OnCreate方法中添加如下代码即可完成自动更新(如果开发者已经有了最新的APK版本,只要上传到友盟网站,同时客户端版本的版本号小于当前最新版本,客户端在启动时就会有更新提示,详情参考http://dev.umeng.com/doc/document_update_android.html,版本号在AndroidManifest.xml中的android:versionCode="1"定义,当你需要更新版本时,修改android:versionCode="1"中的数值后上传Apk文件到你的友盟账号即可(数值必须比原版本大)):

/**
   * 设置自动更新Start
   */
  //如果想程序启动时自动检查是否需要更新, 把下面两行代码加在Activity 的onCreate()函数里。
  //默认在Wi-Fi接入情况下才进行自动提醒。
  UmengUpdateAgent.setUpdateOnlyWifi(false);
  UmengUpdateAgent.update(this);
  /**
   * 设置自动更新End
   */

注:

  • 每次更新应用程序,您只需要修改VersionCode,把应用程序的apk文件上传到友盟。UmengUpdateAgent.update方法会判断是否有新版应用程序,如果发现可更新的应用程序安装包,会提示用户是否更新。用户选择更新后,安装包会在后台下载自动安装更新。(按照version code来检测是否需要更新)
  • 需要添加权限 android.permission.WRITE_EXTERNAL_STORAGE.
  • 考虑到用户流量的限制,目前我们默认在Wi-Fi接入情况下才进行自动提醒。如需要在其他网络环境下进行更新自动提醒,则请添加以下代码:UmengUpdateAgent.setUpdateOnlyWifi(false)。 特别提示:针对机顶盒等可能不支持或者没有无线网络的设备, 请同样添加上述代码。

  • 按渠道更新功能: 需要开发者在网站上按照渠道添加对应的更新包,渠道更新的规则是: SDK检测本地安装的软件对应的渠道,然后连接服务器检测更新,如果服务器上有对应渠道的更新包 则选择此更新包并返回提示,如果服务器上没有对应渠道的更新包但有默认的更新包,则选择默认的 更新包并返回提示,如果服务器上没有默认的更新包,但是有其他渠道的更新包,将不会有更新提醒。

这是我在别的地方看到的一篇文章http://www.eoeandroid.com/thread-210005-1-1.html?_dsign=85ea5d0d,是关于Android 统计分析 SDK使用指南的,写的比较专业,希望能够帮助到你,如有疑问请留言。

友盟官方文档:http://dev.umeng.com/auto-update/android/quick-start

【实用篇】Android之应用程序实现自动更新功能的更多相关文章

  1. Android应用程序的自动更新升级(自身升级、通过tomcat)(转)

    Android应用程序的自动更新升级(自身升级.通过tomcat) http://blog.csdn.net/mu0206mu/article/details/7204746 刚入手android一个 ...

  2. Android学习系列(3)--App自动更新之自定义进度视图和内部存储

    友好的视觉感知和稳定的不出错表现,来自于我们追求美感和考虑的全面性,博客园从技术的角度,一直我都很欣赏.这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 这 ...

  3. Android应用自动更新功能的实现!!!

    自动更新功能的实现原理,就是我们事先和后台协商好一个接口,我们在应用的主Activity里,去访问这个接口,如果需要更新,后台会返回一些数据(比如,提示语:最新版本的url等).然后我们给出提示框,用 ...

  4. 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新

    源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...

  5. Android实现自动更新功能

    Android实现自动更新功能 Android自动更新的功能可以使用第三方的SDK来实现,但是类似友盟,就不支持x86手机的自动更新,科大讯飞,弹窗是全局的,小米手机就会默认把弹窗权限关掉不允许弹出提 ...

  6. Android应用自动更新功能的实现!

    Android应用自动更新功能的实现!http://blog.csdn.net/android_tutor/article/details/7015986 private static final i ...

  7. WinForm应用程序中实现自动更新功能

    WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...

  8. Windows程序通用自动更新模块(C#,.NET4.5以上)

    本通用自动更新模块适合所有Windows桌面程序的自动更新,不论语言,无论Winform还是wpf. 一.工作流程:1. 主程序A调起升级程序B2. B从服务器获取更新程序列表,打印更新信息.3. B ...

  9. android使用友盟第三方自动更新/手动更新

    最近项目用到自动更新,发现一个方便快捷的第三方组件非常好用,只需要几行代码搞定,非常适合新手使用.分享给大家一起学习. 本文档帮助您以最快速最简洁的方式集成使用自动更新组件. 一.申请友盟开发者账号创 ...

随机推荐

  1. 埃及分数 迭代加深搜索 IDA*

    迭代加深搜索 IDA* 首先枚举当前选择的分数个数上限maxd,进行迭代加深 之后进行估价,假设当前分数之和为a,目标分数为b,当前考虑分数为1/c,那么如果1/c×(maxd - d)< a ...

  2. 转:强制Visual Studio以管理员身份运行

    Windows 8的一个既安全又蛋疼之处是UAC的行为被改变了.以往在Windows 7中,只要关闭了UAC,自己的帐号又是本机管理员组的,任何程序都会以管理员身份启动.然而,在Windows 8上, ...

  3. nodejs02

    Node.js没有根目录的概念,因为它根本没有任何的web容器! 让node.js提供一个静态服务,都非常难! 也就是说,node.js中,如果看见一个网址是 1127.0.0.1:3000/fang ...

  4. [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)

    题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ...

  5. OpenGL编程逐步深入(六)平移变换

    准备知识 从这一节我们开始接触3D对象各种各样的变换,使其显示在屏幕上看起来有深度的感觉.通常每一种变换都是通过矩阵来实现的,把这些变换矩阵逐个的乘起来,然后用乘积乘以顶点位置.在每个教程中,我们致力 ...

  6. GoldenGate 异常处理预案

    异常处理一般步骤 如果GoldenGate复制出现异常,可以通过以下步骤尝试解决问题: 1)        通过ggsci>view report命令查找ERROR字样,确定错误原因并根据其信息 ...

  7. dd---复制文件并对原文件的内容进行转换和格式化处理

    dd命令用于复制文件并对原文件的内容进行转换和格式化处理.dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果.用的比较多的还是用dd来备份裸设备.但是不推荐,如果需要 ...

  8. 【转载】解决django models文件修改后的数据库同步问题——south模块

    转载链接:https://www.cnblogs.com/frchen/p/5732490.html 在使用django进行开发时,往往需要根据不同的需求对model进行更改.而这时候,python ...

  9. 紫书 例题 10-13 UVa 830(递推)

    首先我们按照这三个U的位置来分类,当前三个U在i,i+1, i+2. 那么先看三个U前面,前面不能有三个U,因为我们不能重复计算 那么就是所有的组合减去有U的情况 为了叙述方便,我们设答案为f(n), ...

  10. WHU 1548 Home 2-SAT

    ---恢复内容开始--- 题意: N个人想回家在至少一个时刻.至多两个时刻.并且,他们每个人都能独自回家. 定义:ai表示第i个人回家的时间, xij = abs(ai - aj) (i != j). ...