最近需要做应用版本更新功能,因为之前已经写过一篇版本更新的功能了,虽然请求接口还是用的HttpUrlConnection,想着改改现在应用使用的请求方式也挺快的嘛,心里开始暗喜,可以偷偷懒了,哈哈哈。

实现的时候发现我想多了,之前那篇是在应用内的版本更新,而现在需要的是跳转到应用市场进行版本更新,这就一脸懵逼了,之前还真没这么干过,没办法了,只能查资料了,发现实现起来还是挺简单的嘛,还能省很多处理。

现在版本更新有两种处理方式了:
(1)跳转到App应用市场(例如:应用宝、豌豆荚等等),通过应用市场下载更新安装。
(2)在App内进行Apk下载,下载完成后更新安装。

之前已经写过第二种方式,虽然有些粗糙,可流程还是挺完善的。

这篇就用第一种方式来实现,走起。

实现思路:
1.请求后台数据,根据返回版本号对比判断应用是否需要进行更新操作。
2.若不需要,跳转到登录或应用主界面,若需要进行弹框,让用户选择是否进行更新操作。
3.若用户选择取消更新,则跳转到登录或应用主界面
4.若用户选择更新,则判断手机内是否安装需要进入的应用市场APP。
5.如果已安装,那么根据包名直接进入应用市场的详情页面下载apk.
6.如果未安装,那么根据后台返回的地址,用浏览器打开进行下载。

关键步骤代码说明:
1.判断用户手机内是否安装需要进入的应用市场APP

    /*** 判断应用市场是否存在的方法** @param context* @param packageName* * 主流应用商店对应的包名* com.android.vending    -----Google Play* com.tencent.android.qqdownloader  -----应用宝* com.qihoo.appstore    -----360手机助手* com.baidu.appsearch   -----百度手机助* com.xiaomi.market   -----小米应用商店* com.wandoujia.phoenix2 -----豌豆荚* com.huawei.appmarket  -----华为应用市场* com.taobao.appcenter   -----淘宝手机助手* com.hiapk.marketpho    -----安卓市场* cn.goapk.market      -----安智市场*/public static boolean isAvilible(Context context, String packageName) {// 获取packagemanagerfinal PackageManager packageManager = context.getPackageManager();// 获取所有已安装程序的包信息List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 用于存储所有已安装程序的包名List<String> pName = new ArrayList<String>();// 从pinfo中将包名字取出if (pinfo != null) {for (int i = 0; i < pinfo.size(); i++) {String pf = pinfo.get(i).packageName;pName.add(pf);}}// 判断pName中是否有目标程序的包名,有true,没有falsereturn pName.contains(packageName);}

2.根据包名直接进入应用市场的详情页面下载apk

    /*** 启动到应用商店app详情界面** @param appPkg    目标App的包名* @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面*/public static void launchAppDetail(Context mContext, String appPkg, String marketPkg) {try {if (TextUtils.isEmpty(appPkg)) {return;}Uri uri = Uri.parse("market://details?id=" + appPkg);Intent intent = new Intent(Intent.ACTION_VIEW, uri);if (!TextUtils.isEmpty(marketPkg)) {intent.setPackage(marketPkg);}intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(intent);} catch (Exception e) {e.printStackTrace();}}

3.未安装市场应用,那么根据后台返回的地址,用浏览器打开地址进行下载

  Uri uri = Uri.parse(url);Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);

到这里基本就可以实现了,是不是觉得比在应用内更新更简单呢。


小编整理了一份Android电子书籍,需要的童鞋关注底部公众号(longxuanzhigu)回复:“e_books” 即可获取哦!

以下是个人公众号(longxuanzhigu),之后发布的文章会同步到该公众号,方便交流学习Android知识及分享个人爱好文章:

Android实现跳转版本更新功能相关推荐

  1. Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...

    本文实例讲述了Android开发实现的IntentUtil跳转多功能工具类.分享给大家供大家参考,具体如下: 说明:此工具类是本人开发中总结下来的,还有其它的跳转亲给我留言,希望大家一起把这个工具类打 ...

  2. Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...

  3. Android通过DownloadManager实现App的版本更新功能

    1.DownloadManager介绍 DownloadManger是android 2.3(api level 9)开始 提供的用于优化处理长时间的下载操作.DownloadManager 处理Ht ...

  4. android 升级代码,一句代码实现Android版本更新功能

    自从友盟关闭了版本更新功能后,安卓的版本更新只能自己来撸了,结合之前友盟的版本更新,其实实现起来也简单,这里简单说说版本更新实现的思路: 第一步,通过接口获取更新信息(版本号.更新内容.apk下载地址 ...

  5. Android 集成科大讯飞语音听写功能

    在科大讯飞官方下载SDK 把相对应的jar的包和so文件引入项目中 还有对应的文件夹拷贝到项目中即可 废话不多少 直接上代码多用户聊天功能(听写) 主页面布局文件 <?xml version=& ...

  6. android 仿微信demo————登录功能实现(移动端)

    android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...

  7. Android调用跳转百度地图、高德地图、腾讯地图进行目的地导航

    Android App跳转百度地图.高德地图.腾讯地图进行目的地导航. 先放上百度.高德.腾讯地图调起API文档地址,有些参数不懂可以参考. 百度地图:http://lbsyun.baidu.com/ ...

  8. android 仿微信demo————注册功能完善添加头像功能(移动端)

    android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...

  9. Android 端“被挤下线”功能的实现 2017-11-15 sun_____xin code小生 作者 | sun_____xin 地址 | http://www.jianshu.com/p/

    Android 端"被挤下线"功能的实现 2017-11-15 sun_____xin code小生 作者 | sun_____xin 地址 | http://www.jiansh ...

最新文章

  1. 敏捷DoD完成定义的多种形态
  2. MySQL year()函数
  3. 自制割接(平滑过滤)实验大全
  4. NOIP2016-D2-T2 蚯蚓(单调队列)
  5. linux shell 之 crontab(定时任务)详解
  6. MSG数据(EUMETSAT)和GOES数据(NOAA)下载
  7. 2018的锅让2019来悲
  8. 中国“秃”如其来的头发经济
  9. Oracle 中的 unique index 和 non unique index的区别
  10. Github上的开源项目5
  11. 面试被虐题— 谨以此致,mark一个悲惨的下午
  12. Tumblr营销大法(一)
  13. 任正非解释华为鸿蒙系统,比Android/iOS还要快,看任正非怎么说华为鸿蒙系统
  14. HTML中让整个效果居中,仅使用CSS做到完全居中的超级攻略
  15. 基于Java机器学习自学笔记(第81-87天:CNN卷积神经网络的入门到全代码编写)
  16. Surface Go使用体验——一文告诉你我为什么没有选择iPad
  17. [破解]天草初级笔记
  18. 杰弗里·辛顿 反向传播_菲菲·李·杰弗里·塞顿和王座人工智能游戏
  19. .net fileupload批量上传可删除_8uftp上传工具,8uftp上传工具的使用方法只需8步
  20. 硬件测试工程师——第一天(认识元器件)

热门文章

  1. 数图互通高校可视化房产管理推动智慧校园建设
  2. array_multisort()函数详解
  3. 时钟翻转事件_开发人员和时钟翻转
  4. 源代码防泄漏该怎么做呢
  5. office办公软件的集合
  6. java 媒体_Java多媒体编程应用
  7. Open3d学习计划——3(点云)
  8. Python基础数据类型补充及深浅拷贝
  9. 工业自动化控制通讯协议库,工业自动软件必备的基本程序,该库基于以c#自主开发
  10. jz1076 【基础】机器人的逻辑