Android实现跳转到应用市场进行版本更新功能
最近需要做应用版本更新功能,因为之前已经写过一篇版本更新的功能了,虽然请求接口还是用的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) {
// 获取packagemanager
final 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,没有false
return 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);
到这里基本就可以实现了,是不是觉得比在应用内更新更简单呢。
以下是个人公众号(longxuanzhigu),之后发布的文章会同步到该公众号,方便交流学习Android知识及分享个人爱好文章,有问题可以留言哦:

Android实现跳转到应用市场进行版本更新功能的更多相关文章
- Android应用如何跳转到应用市场详情页面
Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用.那如何跳转到应用市场呢?可能跳转的方法大家都是知道的,方法 ...
- 【转】Android应用如何跳转到应用市场详情页面
Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用.那如何跳转到应用市场呢? 可能跳转的方法大家都是知道的,方 ...
- Android在跳转市场进行评分问题总结
原本以为应用评分是个很小的功能,但是一实现才发现真不是个小事.网上搜索资料没有找到答案,在很多开发群里面询问了很多人也没有解决问题,最后分析log,反编译看源码才终于有了些眉目,好吧,上代码: 1 t ...
- 判断终端类型、微信的文章防盗链、h5页面跳转打开新的app、跳转到app市场
判断终端的类型.安卓.ios.微信.qq function GetMobelType() { var browser = { ...
- Android 页面跳转之生命周期调用顺序问题
Android Activity 常用技巧 Android Activity 启动模式和任务栈 Android 页面跳转之生命周期调用顺序问题 一.页面跳转逻辑分析 1.1 跳转逻辑分析 Androi ...
- Android——Activity跳转
Activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayou ...
- android Fragment跳转Fragment
android Fragment跳转Fragment,最新的android studio3 在系统模板建立的BottomNavigationView 中跳转方式 此版本下不能用FragmentMana ...
- Android 手机卫士--导航界面3、4和功能列表界面跳转逻辑处理
刚刚花了一点时间,将导航界面3.4的布局和相应的跳转逻辑写了一下: Setup3Activity代码如下: /** * Created by wuyudong on 2016/10/10. */ pu ...
- 中国的 Android:尚未发掘的应用市场?
作者: Wendy Boswell 本周,中国的搜索引擎公司百度最新公布的一篇报告介绍了中国 Android 用户的移动趋势. 下面是一些有价值的统计数据: 眼下在中国,每天的 Android 活跃用 ...
随机推荐
- c#Code Contracts代码协定
Code Contracts的命名空间:System.Diagnostics.Contracts 集合1. 安装Code Contracts for .NET插件Contracts.devlab9ts ...
- Plupload上传实例《模仿微云上传实例》,带源码
Plupload上传实例<模仿微云上传实例>,带源码,作者:鱼塘总裁 如有疑问,加群交流:646104701 一.实例截图 1.上传过程 2.上传成功 3.上传失败 4.最小化 二.所需文 ...
- #467 – 使用UniformGrid 均分行和列(Use a UniformGrid for Evenly Spaced Rows and Columns)
原文 #467 – 使用UniformGrid 均分行和列(Use a UniformGrid for Evenly Spaced Rows and Columns) UniformGrid 布局面板 ...
- Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法
原文:Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法 [函数名称] 二值图像细化算法 WriteableBitmap ThinningProcess ...
- 2018-4-25-- 2.在sublime3里安装git插件并连接GitHub
1.配置全局参数 Git的主要配置包括用户名.邮箱的设置.以及生成SSH密钥公钥等. 首先运行一下的命令设置git提交代码时自己的用户信息. 2.在sublime3里使用时需要配置push.defau ...
- win10 uwp 异步转同步
原文:win10 uwp 异步转同步 有很多方法都是异步,那么如何从异步转到同步? 可以使用的方法需要获得是否有返回值,返回值是否需要. 如果需要返回值,使用GetResults 如从文件夹获取文件: ...
- 喜迎Win10周年版,芒果TV UWP完善手机视频离线下载
喜迎Win10周年版更新,湖南卫视旗下唯一官方视频平台<芒果TV>近日向Win10商店提交了芒果TV UWP V3.1.0版,这次不仅在上一版(V3.0.0)的基础上完善了用户呼声最高的手 ...
- 伪类&伪元素
刚开始学习伪类和伪元素的时候,觉得好混乱呀,分不清有什么区别,用的时候也没注意对比.现在总结一下他们的区别吧. w3c中对它们的定义分别为: css伪类用于向某些选择器添加特殊的效果. css伪元素用 ...
- Asp +Js 无刷新分页
Default.aspx代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" ...
- 使用WebBrowser并调用网页中的JS函数
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃 建议在代码中动态设置,如: ui->axWidget->setControl( ...