当前位置: 首页 > news >正文

【Android】安卓打开指定厂商的应用市场

解决思路
  • 根据厂商名,获取指定应用市场包名,和网页版地址
  • 如果本地已安装应用市场软件,则跳转至应用市场下载
  • 如果本地未安装应用市场软件,则跳转至网页版应用市场下载
  • 如果未提供网页版应用市场平台,则跳转至该应用市场的下载地址
  • 以上条件均不满足,提示无法找到对应的应用市场
实现代码
object MarketUtils {const val MARKET_CHANNEL_HUAWEI = "HUAWEI"const val MARKET_CHANNEL_HONOR = "HONOR"const val MARKET_CHANNEL_XIAOMI = "XIAOMI"const val MARKET_CHANNEL_VIVO = "VIVO"const val MARKET_CHANNEL_OPPO = "OPPO"// not supported alreadyconst val MARKET_CHANNEL_TENCENT = "TENCENT"const val MARKET_CHANNEL_ALIBABA = "ALIBABA"const val MARKET_CHANNEL_BAIDU = "BAIDU"const val MARKET_CHANNEL_GOOGLE = "GOOGLE"const val MARKET_CHANNEL_SAMSUNG = "SAMSUNG"const val MARKET_CHANNEL_LENOVO = "LENOVO"const val MARKET_PACKAGE_HUAWEI = "com.huawei.appmarket"const val MARKET_PACKAGE_HONOR = "com.hihonor.appmarket"const val MARKET_PACKAGE_XIAOMI = "com.xiaomi.market"const val MARKET_PACKAGE_VIVO = "com.bbk.appstore"const val MARKET_PACKAGE_OPPO = "com.heytap.market"const val MARKET_WEBSITE_HUAWEI = "https://appgallery.huawei.com/app/C5683"const val MARKET_WEBSITE_HONOR = ""const val MARKET_WEBSITE_XIAOMI = "https://app.mi.com/details?id=com.tencent.mm"const val MARKET_WEBSITE_VIVO = "https://h5.appstore.vivo.com.cn/#/details?appId=40413&frompage=searchResultApp"const val MARKET_WEBSITE_OPPO = "https://store.oppomobile.com"fun openMarketByPackage(packageName: String) {val uri = Uri.parse("market://details?id=$packageName")val intent = Intent(Intent.ACTION_VIEW, uri)intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)getAppContext().startActivity(intent)}fun openMarketByChannel(channel: String) {openMarketByChannel(channel, getAppContext().packageName)}fun openMarketByChannel(channel: String, packageName: String) {val marketPackage = getMarketPackage(channel)if (!isPackageInstalled(marketPackage)) {openWebMarketByChannel(channel)return}val context = getAppContext()val uri = Uri.parse("market://details?id=$packageName")val intent = Intent(Intent.ACTION_VIEW, uri)intent.setPackage(marketPackage)intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)context.startActivity(intent)}fun openWebMarketByChannel(channel: String) {val context = getAppContext()val website = getMarketWebsite(channel)val uri = Uri.parse(website)val intent = Intent(Intent.ACTION_VIEW, uri)intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)context.startActivity(intent)}fun getMarketPackage(channel: String): String {return when (channel) {MARKET_CHANNEL_HUAWEI -> MARKET_PACKAGE_HUAWEIMARKET_CHANNEL_HONOR -> MARKET_PACKAGE_HONORMARKET_CHANNEL_XIAOMI -> MARKET_PACKAGE_XIAOMIMARKET_CHANNEL_VIVO -> MARKET_PACKAGE_VIVOMARKET_CHANNEL_OPPO -> MARKET_PACKAGE_OPPOelse -> ""}}fun getMarketWebsite(channel: String): String {return when (channel) {MARKET_CHANNEL_HUAWEI -> MARKET_WEBSITE_HUAWEIMARKET_CHANNEL_HONOR -> MARKET_WEBSITE_HONORMARKET_CHANNEL_XIAOMI -> MARKET_WEBSITE_XIAOMIMARKET_CHANNEL_VIVO -> MARKET_WEBSITE_VIVOMARKET_CHANNEL_OPPO -> MARKET_WEBSITE_OPPOelse -> ""}}fun isPackageInstalled(packageName: String): Boolean {try {getAppContext().packageManager.getApplicationInfo(packageName, 0)return true} catch (e: Throwable) {return false}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 打开一个页面,整个过程会使用哪些协议?
  • UE基础 —— 介绍与安装
  • Python爬虫入门实战(详细步骤)
  • 【mDNS协议】通过UDP广播在局域网内实现设备自动发现和连接的协议
  • Android 应用兼容性变更调试
  • 【C语言知识-输出空格】C语言中输出空格的方法
  • C# ?的使用
  • 目标检测——X光安检数据集
  • 快速上手的企业视频会议系统需要具备哪些能力
  • 魔众文库系统v7.0.0版本推荐店铺功能,管理菜单逻辑优化
  • 【leetcode刷题之路】面试经典hot100(1)——哈希+双指针+滑动窗口+子串
  • HTMLCSS
  • 面试官:怎样设计一个分布式任务调度平台?
  • 【开源分享】PHP在线提交工单源码|工单管理系统源码 (附源码搭建教程)
  • STM32——外部中断(EXTI)
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【comparator, comparable】小总结
  • github指令
  • interface和setter,getter
  • Java 多线程编程之:notify 和 wait 用法
  • leetcode讲解--894. All Possible Full Binary Trees
  • Linux各目录及每个目录的详细介绍
  • opencv python Meanshift 和 Camshift
  • rc-form之最单纯情况
  • 爱情 北京女病人
  • 从零开始的无人驾驶 1
  • 关于extract.autodesk.io的一些说明
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 力扣(LeetCode)357
  • 你不可错过的前端面试题(一)
  • 排序(1):冒泡排序
  • 前端之React实战:创建跨平台的项目架构
  • 温故知新之javascript面向对象
  • 学习HTTP相关知识笔记
  • 栈实现走出迷宫(C++)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 函数计算新功能-----支持C#函数
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​一些不规范的GTID使用场景
  • # include “ “ 和 # include < >两者的区别
  • $(function(){})与(function($){....})(jQuery)的区别
  • (007)XHTML文档之标题——h1~h6
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (二)原生js案例之数码时钟计时
  • (二十三)Flask之高频面试点
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (算法)区间调度问题
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (译) 函数式 JS #1:简介
  • (转)清华学霸演讲稿:永远不要说你已经尽力了