Android--版本检测升级(友盟SDK)

项目上有这样的需求:对指定的版本要求强制升级,同时其它的版本可以选择性升级。

友盟的自动更新功能还是挺好用的,只不过对强制升级这块支持的还不到位。

不过友盟的开发人员也给出了勉强可行的方案:

使用友盟在线参数来控制哪些版本需要强制更新,哪些版本不需要

相关的内容如下:

1.在线参数配置:

http://dev.umeng.com/analytics/android/advanced-integration-guide#3

2.强制更新官方代码:

https://github.com/nxzhou91/umeng-android-sdk-theme/blob/master/blogs/articles/force_update.md

3.我的做法:

配置在线参数,参数值配置规则:版本号,强制更新标志,版本号,强制更新标志,版本号,强制更新标志...

关键代码:

[java] view plaincopy

  1. private void prepare4UmengUpdate() {
  2. MobclickAgent.updateOnlineConfig( MyApplication.getContext() );
  3. //获取友盟在线参数
  4. String update_mode = MobclickAgent.getConfigParams( MyApplication.getContext(), "upgrade_mode" );
  5. Log.d(TAG, "MainActivity.prepare4UmengUpdate, update_mode = " + update_mode);
  6. if(StringUtils.isEmpty(update_mode)) {
  7. return;
  8. }
  9. //转换为数组
  10. mUpdateModeArray = StringUtils.convertStrToArray(update_mode);
  11. UmengUpdateAgent.setUpdateOnlyWifi(false); //在任意网络环境下都进行更新自动提醒
  12. UmengUpdateAgent.update(this);  //调用umeng更新接口
  13. String curr_version_name = null;
  14. try {
  15. curr_version_name = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
  16. }
  17. catch (NameNotFoundException e) {
  18. // TODO Auto-generated catch block
  19. e.printStackTrace();
  20. }
  21. for(int i=0; i<mUpdateModeArray.length; i+=2 ) {
  22. if(StringUtils.isEquals(mUpdateModeArray[i], curr_version_name)) {
  23. if(StringUtils.isEquals(mUpdateModeArray[i + 1], "F"))  {
  24. //对话框按键的监听,对于强制更新的版本,如果用户未选择更新的行为,关闭app
  25. UmengUpdateAgent.setDialogListener(new UmengDialogButtonListener() {
  26. @Override
  27. public void onClick(int status) {
  28. switch (status) {
  29. case UpdateStatus.Update:
  30. break;
  31. default:
  32. //友盟自动更新目前还没有提供在代码里面隐藏/显示更新对话框的
  33. //"以后再说"按钮的方式,所以在这里弹个Toast比较合适
  34. Toast.makeText(MyApplication.getContext(),
  35. "非常抱歉,您需要更新应用才能继续使用", Toast.LENGTH_LONG).show();
  36. }
  37. }
  38. });
  39. }
  40. break;  //只要找到对应的版本号,即结束循环
  41. }
  42. }
  43. }
时间: 2024-10-21 13:01:17

Android--版本检测升级(友盟SDK)的相关文章

试用友盟SDK实现Android分享微信朋友圈

社会化分享是眼下必学且火热的功能.之前有写第三方登录,那仅仅是社会化分享的一部分.今天来玩玩分享微信朋友圈. 为了方便操作,还是依照步骤写. 一,注冊 注冊应用已经在这里具体说明过了,这里就不多提了. 二,在微信开放平台中授权开发人员身份,以及注冊应用 链接:https://open.weixin.qq.com/ 进入管理中心 提交个人(公司)资料注冊开发人员信息(须要审核等待).通过后再创建移动应用(确保Package和Appname的一致性)之后拿到应用的AppId和Appsecret 三,

试用友盟SDK实现Android第三方登录(以QQ登录为例)

虽然自己在日常工作中用不到第三方登录,但是它的重要性无可厚非. 废话不多说,接下来跟着步骤走,轻松集成第三方登陆. 一,在友盟注册应用 注册好友盟账户后,在http://www.umeng.com/social 中注册自己的应用 拿到友盟Appkey(记得先创建项目,在注册时package别弄错了...) 二,在腾讯开放平台中注册开发者信息,并注册应用 链接:http://open.qq.com/ 进入后点击移动应用 提交个人(公司)资料注册开发者信息(需要审核等待),通过后再创建移动应用(这里

Android开发之友盟统计

当我们开发好App后就会把它发到应用市场上,但是目前有很的应用市场(如,豌豆荚,应用宝,安卓市场等)那么问题来了,假如我们想统计我们开发的应用的下载次数,就必须把各个应用市场的下载量加起来,就这一点就会让你放弃这个想法,那么有没有更好的方法呢,答案是肯定的,用友盟统计啊,它不仅可以统计我们的应用的下载量,启动次数,还可以统计页面访问量.查看程序的bug等等,那么它怎么使用呢?它的使用步骤如下: 一.注册友盟的账号并申请key 集成友盟SDK之前,您首先需要到友盟官网注册并且添加新应用,获得App

友盟SDK实现分享

友盟SDK文档已经写得很详细了,这边整理笔记,先过一遍流程: 1??注册友盟账号以获取Appkey,下面以分享到微信为例 2??申请第三方账号是因为要进行分享.授权这样的操作肯定是要通过第三方的审核(这样来源可以显示成自己App的icon).如果只是做个demo的话友盟提供了一些平台的测试账号: 3??适配iOS9系统做了几个处理,解决“您的设备未安装微信”的问题 4??下载并安装SDK,可以上代码了 1.在 AppDelegate文件内设置你的AppKey 2.配置第三方APPID#impor

iOS:友盟SDK分享

友盟SDK分享 基本步骤: 1.注册友盟开发者账号 2.登陆账号,添加新应用,获取AppKey 3.下载并安装SDK 4.解压SDK压缩包,将形如UMSocial_sdk_x.x.x文件拖入工程中 例如:UMSocial_Sdk_4.4 5.项目面板中手动添加系统库SystemConfiguration.framework 注意:       1)添加SDK后需要手动添加系统库SystemConfiguration.framework 2) 若你的工程设置了all_load,需要添加手机QQ S

android分渠道打包,监测日活量统计(基于友盟SDK)

客服说要看App日活,让我们加个统计功能. (我们技术部已经混到客服部都能直接提需求的地步) 首先接入友盟统计的SDK,在项目外层的build.gradle中添加依赖'https://dl.bintray.com/umsdk/release' buildscript { repositories { google() jcenter() maven { url 'https://dl.bintray.com/umsdk/release' } } dependencies { classpath

Android学习之友盟5.0推送,分享踩坑总结

这几天都没有写博客,今天集成友盟5.0推送,分享,得闲,总结一下友盟5.0推送分享踩得哪些坑! 之前写的友盟踩坑心得是基于友盟4.3版本的,现在友盟5.0相较于4.3,有了较大的改动,呜呼哀哉!学而时习之吧. 友盟5.0的好处:集成推送,分享可以通过导入module的形式,代码简化,维护性高,(一些资源文件就不用自己慢慢去拷贝了). 至于缺点,就是刚刚改版,会有很多跟4.3不一样的使用方法,所以需要前人去踩坑了! 友盟推送: 1:添加Module Android studio导入Module自不

高通AR和友盟SDK的AndroidManifest.xml合并

因为高通的AR在android中一开始就要启动,所有主Activity要设置为高通的Activity,即android:name="com.qualcomm.QCARUnityPlayer.QCARPlayerNativeActivity" 的主Activity. 在友盟的AndroidManifest.xml中删除主Activity,复制高通的主Activity和其他Activity,以及高通相关的权限. <?xml version="1.0" encodi

Android开发中用友盟做分享的一些坑

仅限于用5.1.4版本的 按照友盟分享的API在自己的代码中修改: 1.微信分享需要打包APK文件,数字签名与微信开发申请的要一致 2.此name中属性不能修改 value为友盟的申请的appkey <meta-data   android:name="UMENG_MESSAGE_SECRET"    android:value="******************************" > 3.做微博分享时:libs里面添加SocialSDK_S