最近项目中有个需求,在客户端中跳转到应用市场去下载应用,

public class MarketUtils {

/**

* @param marketPackage 接口下发应用市场包名

* @param appPackage 固定要下载的应用

* */

public static boolean getAndroidBrand(Context context,JSONObject marketPackage,String appPackage){

String brand = Build.MANUFACTURER.toLowerCase();

Log.e("本机的手机品牌", "产品品牌:" + Build.BRAND.toString().toLowerCase() + "产品制造商:"+brand);

try {

if (marketPackage != null ){ //如果检测到有这个市场的包名 并且手机存在这个市场

//先要判断各大手机应用市场类似于 oppo vivo huawei 等,如果没有 再去判断

if (marketPackage.optString(brand) != null && hasPackage(context,marketPackage.optString(brand))){ //先检测各大手机应用市场 如果没有 则去检测其他助手 或者市场等

launchAppDetail(context,appPackage,marketPackage.optString(brand));

return true;

}else{

JSONArray array = marketPackage.optJSONArray("other");

if (array != null){

for (int i=0;i

if (hasPackage(context,array.optString(i))){

launchAppDetail(context,appPackage,array.optString(i));

return true;

}

}

}

}

}

} catch (Exception e) {

return false;

}

return false;

}

/**

* 判断应用市场是否存在的办法

* oppo查不到应用商店

* */

public static boolean isAvilible(Context context,String packageName){

//获取packageManager

final PackageManager packageManager = context.getPackageManager();

//获取所有已安装程序的包信息

List pinfo = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

//用于存储所有已安装程序的包名

List pName = new ArrayList<>();

if (pinfo != null){

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

String pf = pinfo.get(i).packageName;

Log.e("oppo应用市场",pinfo.get(i).packageName);

pName.add(pf);

}

}

return pName.contains(packageName);

}

/**

* 启动到应用商店app详情界面

* @param appPkg 目标App的包名

* @param marketPkg 应用商店包名 ,如果为"" 则由系统弹出应用商店

* 列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败

*

*/

public static void launchAppDetail(Context context, 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);

context.startActivity(intent);

} catch (Exception e) {

e.printStackTrace();

}

}

//通过包名找应用

private static boolean hasPackage(Context context, String pkgName) {

if (null == context || null == pkgName) {

return false;

}

boolean bHas = true;

try {

context.getPackageManager().getPackageInfo(pkgName, PackageManager.GET_GIDS);

} catch (PackageManager.NameNotFoundException e) {

// 抛出找不到的异常,说明该程序已经被卸载

bHas = false;

}

return bHas;

}

}

android 跳转oppo应用中心_android关于应用市场跳转的问题相关推荐

  1. android 跳转oppo应用中心_Android根据打包渠道跳转到对应的应用市场

    我们Android会打很多渠道包,以区分各个市场的使用情况,但是App内部升级的包一般是默认官方渠道包,这样,如果用户直接应用内升级的话,就会造成所有用户的渠道都会变成官方渠道,所以,可能会需要用到跳 ...

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

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

  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个人中心界面_在android搭建个人的文件中心(1)--一个想法

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

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

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

  9. android仿今日头条个人中心页面

    android仿今日头条个人中心页面 效果图 实现步骤: 自定义ScrollView,添加一个反弹的动画 代码: package com.example.administrator.gerenzhon ...

最新文章

  1. Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建
  2. 8岁网红博主蝉联YouTube收入榜第一,今年赚了1.8亿
  3. Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
  4. iframe 自动登录_安阳联通利用python实现三集中未反馈工单自动提取
  5. cad立面索引符号 规范_一套标准规范施工图包含哪些?13年深化设计师3分钟带你正确认知...
  6. 线段树优化的Dijkstra
  7. JQuery 对表单进行初始化操作
  8. Poor Man's BERT: 更小更快的Transformer模型
  9. 喵喵的华为DevCloud使用指南(2)-看板项目
  10. Docker工作笔记002---CentOS7 Docker 安装
  11. 项目范围管理论文提纲
  12. https免费泛域名证书申请
  13. 计算机软考集成项目管理工程师,计算机软考系统集成项目管理工程师
  14. 离散数学复习集合之关系
  15. 自建服务器和购买云服务器的过程总结
  16. php的惰性加载,thinkphp5.0的惰性加载
  17. 个人所得税年度应纳税额抵扣-云服务器ECS入门-考试题及答案-申报更正流程
  18. C#发送ZPL控制斑马Zebra打印机源码
  19. 语音识别引擎_linux 语音识别引擎_中文实时语音识别引擎 - 云+社区 - 腾讯云
  20. 恒生电子实习记录-10

热门文章

  1. centos 中svn服务的启动、关闭、重启, 以及添加开机启动
  2. 引入单点登录,需要考虑哪些问题?
  3. 网站服务器数据能不能互通,原神服务器数据是否互通
  4. 解决MLCC电容啸叫的4个对策
  5. 浅谈win764位和32位有什么区别?
  6. 基于php+mysql的完美农场建设
  7. 小程序 购物车 多个店铺
  8. 解放双耳、放下手机,Sanag A11S秘境寒鸦气传导耳机体验
  9. CentOS VI命令自动显示行号
  10. Android TextView 使用以及属性(方法)大全