我们Android会打很多渠道包,以区分各个市场的使用情况,但是App内部升级的包一般是默认官方渠道包,这样,如果用户直接应用内升级的话,就会造成所有用户的渠道都会变成官方渠道,所以,可能会需要用到跳转到渠道对应的市场的功能。目前匹配了以下几个市场,如有需要更多的市场,可以自己获取到对应市场的包名后,按规则添加即可:

// 跳转到应用宝的网页版地址

private final static String WEB_YINGYONGBAO_MARKET_URL = "https://a.app.qq.com/o/simple.jsp?pkgname=com.dk.collage";

private final static String MARKET_PKG_NAME_MI = "com.xiaomi.market";

private final static String MARKET_PKG_NAME_360 = "com.qihoo.appstore";

private final static String MARKET_PKG_NAME_VIVO = "com.bbk.appstore";

private final static String MARKET_PKG_NAME_OPPO = "com.oppo.market";

private final static String MARKET_PKG_NAME_YINGYONGBAO = "com.tencent.android.qqdownloader";

private final static String MARKET_PKG_NAME_ANZHI = "cn.goapk.market";

private final static String MARKET_PKG_NAME_HUAWEI = "com.huawei.appmarket";

private final static String MARKET_PKG_NAME_BAIDU = "com.baidu.appsearch";

private final static String MARKET_PKG_NAME_LIQU = "com.liqucn.android";

private final static String MARKET_PKG_NAME_SOUGOU = "com.sougou.androidtool";

private final static String MARKET_PKG_NAME_MEIZU = "com.meizu.mstore";

/**

* 跳转到渠道对应的市场,如果没有该市场,就跳转到应用宝(App或者网页版)

* @param context

*/

public void goToAppMarket(Context context) {

try {

Uri uri = Uri.parse("market://details?id=" + context.getApplicationContext().getPackageName());

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

// 过去当前渠道channelName

String channelName = CommonUtil.getCurrentChannelName();

PackageManager pm = context.getPackageManager();

List resInfo = pm.queryIntentActivities(intent, 0);

String pkgName = "";

switch (channelName) {

case "normal":

pkgName = MARKET_PKG_NAME_YINGYONGBAO;

break;

case "baidu":

pkgName = MARKET_PKG_NAME_BAIDU;

break;

case "huawei":

pkgName = MARKET_PKG_NAME_HUAWEI;

break;

case "oppo":

pkgName = MARKET_PKG_NAME_OPPO;

break;

case "qihu360":

pkgName = MARKET_PKG_NAME_360;

break;

case "vivo":

pkgName = MARKET_PKG_NAME_VIVO;

break;

case "xiaomi":

pkgName = MARKET_PKG_NAME_MI;

break;

case "yingyongbao":

pkgName = MARKET_PKG_NAME_YINGYONGBAO;

break;

case "anzi":

pkgName = MARKET_PKG_NAME_ANZHI;

break;

case "liqu":

pkgName = MARKET_PKG_NAME_LIQU;

break;

case "sougou":

pkgName = MARKET_PKG_NAME_SOUGOU;

break;

case "meizu":

pkgName = MARKET_PKG_NAME_MEIZU;

break;

default:

pkgName = MARKET_PKG_NAME_YINGYONGBAO;

break;

}

// 给一个默认的 应用宝

if (NullUtil.isNull(pkgName)) {

pkgName = MARKET_PKG_NAME_YINGYONGBAO;

}

// 筛选指定包名的市场intent

if (resInfo.size() > 0) {

for (int i = 0; i < resInfo.size(); i++) {

ResolveInfo resolveInfo = resInfo.get(i);

String packageName = resolveInfo.activityInfo.packageName;

if (packageName.toLowerCase().equals(pkgName)) {

Intent intentFilterItem = new Intent(Intent.ACTION_VIEW, uri);

intentFilterItem.setComponent(new ComponentName(packageName, resolveInfo.activityInfo.name));

context.startActivity(intentFilterItem);

return;

}

}

}

// 未匹配到,跳转到应用宝网页版

goToYingYongBaoWeb(context);

} catch (Exception e) {

e.printStackTrace();

// 发生异常,跳转到应用宝网页版

goToYingYongBaoWeb(context);

}

}

/**

* 跳转到应用宝网页版 多客拼团页面

*/

public void goToYingYongBaoWeb(Context context) {

try {

Uri uri = Uri.parse(WEB_YINGYONGBAO_MARKET_URL);

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

} catch (Exception e) {

e.printStackTrace();

}

}

android 跳转oppo应用中心_Android根据打包渠道跳转到对应的应用市场相关推荐

  1. android 跳转oppo应用中心_android 跳转到应用通知设置界面的示例

    4.4以下并没有提过从app跳转到应用通知设置页面的Action,可考虑跳转到应用详情页面,下面是直接跳转到应用通知设置的代码: if (android.os.Build.VERSION.SDK_IN ...

  2. android 跳转oppo应用中心_android关于应用市场跳转的问题

    最近项目中有个需求,在客户端中跳转到应用市场去下载应用, public class MarketUtils { /** * @param marketPackage 接口下发应用市场包名 * @par ...

  3. android 跳转oppo应用中心_Android 遍历手机应用,跳转应用市场详情页面

    /** * 启动到app详情界面 * * @param appPkg * App的包名 * @param marketPkg * 应用商店包名 ,如果为""则由系统弹出应用商店列表 ...

  4. OPPO连续点击android版本9,oppo游戏中心下载安装正版

    oppo手机游戏中心app客户端是一款由oppo官方打造的手机游戏平台,相当于手游盒子软件,里面拥有海量精品游戏,详尽的分类找游戏更轻松:还有专属oppo礼包福利,你可以任意选择自己喜欢的游戏免费安装 ...

  5. android 跳转oppo应用中心_安卓市场—OPPO应用市场ASO详解

    即日枢纽的是OPPO运用商场从上架之前到上架之后的全过程安排. 一.运用商场里面搞预 开始上架之前须要搞的几步安排,领会商场,领会竞品,树立本人的闭头词汇库.(这些安排上几篇文章已经道过,不再过多论述 ...

  6. cocos creator 使用 android studio 接入oppo广告,广点通广告

    这几天分别接了oppo和广点通的广告,两者相似度还是很高的.我接入了 闪屏,插屏,banner条三种类型的广告.接入广告的时候只要看懂了sdk的demo,基本上就问题不大.我在这里写下我的心得,首先是 ...

  7. android 8.0 调系统拍照_Android通知栏微技巧,8.0系统中通知栏的适配

    为什么要进行通知栏适配? 不得不说,通知栏真是一个让人又爱又恨的东西. 通知栏是Android系统原创的一个功能,虽说乔布斯一直认为Android系统是彻彻底底抄袭iOS的一个产品,但是通知栏确实是A ...

  8. android个人中心界面_在android搭建个人的文件中心(1)--一个想法

    本文同大家讨论下如何在android手机上搭建个人的文件中心,让不同设备可以编辑android手机上的同一组文件,就像编辑本地文件一样. 通常的情况是这样的: 个人数据被分散地存在手机.电脑.硬盘和U ...

  9. xmarin.android导航栏,Xamarin.Forms中心标题和透明导航栏 - Android

    小智.. 9 我最近遇到同样的问题,我是用MasterDetailPage在Xamarin.Forms与Android中并不设置标题中心. 那么,显而易见的路线是创建一个自定义渲染器override及 ...

最新文章

  1. Android Architecture Components 整理
  2. [云炬ThinkPython阅读笔记]2.7 注释
  3. 考研【研究所和高校的区别、全国375所独立于高校系统之外的 “研究生所”】
  4. 服务器没有进行新建或修改数据的操作,14-认识DjangoRESTframework
  5. UOJ291 BZOJ4785 ZJOI2017树状数组
  6. java_math_BigInteger
  7. Java创建Excel文档(自定义格式)
  8. MDIO总线介绍 |CSDN创作打卡
  9. 如何复制网页上不能复制的文字——三种解决方案
  10. 网易评论盖楼的数据结构
  11. 微软的teredo服务器,深度完美W10系统通过teredo连接IPv6的方法
  12. 关于提取千位百位十位个位数字
  13. laravel-excel 表格 文档翻译笔记
  14. skb_buff 详解(二)
  15. python tkinter 点击按钮选择文件,返回文件路径
  16. mysql锁表查询和解锁操作
  17. 一、多线程是什么?为什么要用多线程?
  18. 机器学习:维数约减算法PCA(主成分分析法)原理、实现与应用
  19. Chrome启动参数常用参数
  20. 谷歌硬件战略缺陷:无法围绕谷歌助手打造硬件体系

热门文章

  1. HTTP Referer二三事
  2. 分清TCGA中的冷冻切片和福尔马林固定-石蜡包埋切片
  3. 地铁框架保护的原理_地铁直流框架保护原理及应急处理程序
  4. Python-Numpy详解
  5. RJ485接口线序及适用环境
  6. PN结(空间电荷区的形成)
  7. 美国HOLADAY HI2200宽频电磁辐射检测仪维修实例
  8. [转]简单分析C之Curl模块同php的curl和python的pycurl模块的关系
  9. SAP那些事-理论篇-11-SAP核心设计逻辑
  10. SAP 常用MRP元素数据来源相关数据库表和视图总结