目录

​准备工作

逻辑

具体实现


在官方淘宝开放平台查询打开淘宝APP文档,未果。各处查找资料,其中参考了《应用内打开京东、淘宝指定商品或店铺页面》;发现未安装淘宝app时在WebView中打开网页无法下载,其中参考了《三种方式让 Android WebView 支持文件下载》。在写下这边博文之前,始终觉得这种非官方打开方式存在一定隐患,比如官方需要参数发生改变导致我们Intent.setData()中的uri参数不满足官方要求,各位有更好的方式请评论处留言。

​准备工作

  • 店铺id或商品id
  • 淘宝app包名:com.taobao.taobao
  • 淘宝app展示店铺uri:taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id=%1$s
  • 淘宝app展示商品uri:taobao://item.taobao.com/item.htm?id=%1$s
  • webView展示店铺uri:https://shop.m.taobao.com/shop/shop_index.htm?shop_id=%1$s
  • webView展示商品uri:https://item.taobao.com/item.htm?id=%1$

逻辑

  • 检测本地是否安装淘宝app
  • 安装则打开淘宝app,否则打开webView

具体实现

  1. 判断本地是否安装淘宝客户端

        /*** 检测该包名所对应的应用是否存在** @param packageName* @return*/private static boolean checkPackage(String packageName) {return new File("/data/data/" + packageName).exists();}

    其中packageName传入值为淘宝app包名(即com.taobao.taobao)

  2. 根据判断打开淘宝app或webView

        /*** @param activityOrFragment* @param taoBaoShopId       淘宝店铺id* @param taoBaoGoodsId      淘宝商品id* @param reqCode*/private static void openTaobao(ComponentCallbacks activityOrFragment, String taoBaoShopId,String taoBaoGoodsId, int reqCode) {boolean shopEmpty = taoBaoShopId == null || TextUtil.isEmpty(taoBaoShopId);boolean goodsEmpty = taoBaoGoodsId == null && TextUtil.isEmpty(taoBaoGoodsId);if (shopEmpty && goodsEmpty) {return;}Context context = null;//获取Contextif (activityOrFragment instanceof Activity) {context = (Activity) activityOrFragment;} else if (activityOrFragment instanceof Fragment) {context = ((Fragment) activityOrFragment).getContext();} else if (activityOrFragment instanceof android.app.Fragment) {context = ((android.app.Fragment) activityOrFragment).getActivity();}if (checkPackage2(MyApp.getContext().getString(R.string.taobao_package_name))) {//Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);String uriString;if (taoBaoShopId != null && TextUtil.isEmpty(taoBaoShopId)) {uriString = MyApp.getContext().getString(R.string.taobao_app_shop, taoBaoShopId);} else {uriString = MyApp.getContext().getString(R.string.taobao_app_goods, taoBaoGoodsId);}Uri uri = Uri.parse(uriString);intent.setData(uri);if (context == null) {return;}//跳转if (activityOrFragment instanceof Activity) {((Activity) activityOrFragment).startActivityForResult(intent, reqCode);} else if (activityOrFragment instanceof Fragment) {((Fragment) activityOrFragment).startActivityForResult(intent, reqCode);} else if (activityOrFragment instanceof android.app.Fragment) {((android.app.Fragment) activityOrFragment).startActivityForResult(intent, reqCode);}} else {String uriString;if (taoBaoShopId != null && TextUtil.isEmpty(taoBaoShopId)) {uriString = MyApp.getContext().getString(R.string.taobao_web_shop, taoBaoShopId);} else {uriString = MyApp.getContext().getString(R.string.taobao_web_goods, taoBaoGoodsId);}MallDetailActivity.startActivity(activityOrFragment, uriString, reqCode);}}
  3. 调用

        /*** 查看淘宝商铺** @param activityOrFragment* @param taoBaoShopId* @param reqCode*/public static void openShopInTaobao(ComponentCallbacks activityOrFragment,String taoBaoShopId, int reqCode) {openTaobao(activityOrFragment, taoBaoShopId, null, reqCode);}/*** 查看淘宝商品** @param activityOrFragment* @param taoBaoGoodsId* @param reqCode*/public static void openGoodsInTaobao(ComponentCallbacks activityOrFragment,String taoBaoGoodsId, int reqCode) {openTaobao(activityOrFragment, null, taoBaoGoodsId, reqCode);}
  4. 用到资源

    <string name="taobao_app_shop">taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id=%1$s</string>
    <string name="taobao_app_goods">taobao://item.taobao.com/item.htm?id=%1$s</string>
    <string name="taobao_web_shop">https://shop.m.taobao.com/shop/shop_index.htm?shop_id=%1$s</string>
    <string name="taobao_web_goods">https://item.taobao.com/item.htm?id=%1$s</string>
    <string name="taobao_package_name">com.taobao.taobao</string>
    

Android App打开淘宝(店铺或商品)相关推荐

  1. 获取淘宝店铺所有商品API分享 店铺所有商品接口 店铺ID取商品 商品销量排序接口

    获取淘宝店铺所有商品API,是一种可以帮助开发者快速获取淘宝店铺全部商品信息的方式.同时,还支持翻页显示.按价格销量排序等.本文将介绍如何API接口获取特定店铺的所有商品,以及需要注意的事项. 一.申 ...

  2. API电商平台“淘宝店铺所有商品接口”调用示例

    API电商平台"淘宝店铺所有商品接口"调用示例 以下是行业内了解到的一些情况,本帖只展示部分代码,需要更多API调试请移步注册API账号登录 - 跨境电商平台接口提供商 数据采集公 ...

  3. 极客日报:中国批准AMD收购赛灵思;微信可直接打开淘宝链接购买商品;​马斯克称今年将实现全自动驾驶

    一分钟速览新闻点! 中国附加限制性条件批准AMD收购赛灵思 张一鸣再退出多家字节跳动关联公司职务 腾讯计划对斗鱼进行私有化 2022职场摸鱼报告:超9成年轻人平时工作会摸鱼 微信可直接打开淘宝链接购买 ...

  4. 淘宝店铺所有商品接口,商品列表接口,1688店铺所有商品接口,商品列表接口

    以下是行业内了解到的一些情况,本帖只展示部分代码,需要更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Turbo 根据店铺id ...

  5. 获取淘宝店铺所有商品数据

    通过店铺页面源代码获取shopId参数或者通过商品详情接口获取shopId <meta name="microscope-data"content="pageId= ...

  6. 如何让淘宝店铺的商品能自动发货到旺旺

    很多朋友在淘宝购买东西,特别是购买一些虚拟物品,只要一拍下,马上旺旺就自动发过来了. 很奇怪人家店铺是怎么实现24小时无人职守自动发货的,其实这些店铺的卖家都是使用了淘宝服务市场上的一个服务软件,下面 ...

  7. 淘宝api app版淘宝店铺商品搜索

    接口标识 接口地址:/app/taobao/shopGoodsSearch 返回格式:json 请求方式:HTTP GET POST 请求示例:/app/taobao/shopGoodsSearch? ...

  8. 淘宝api app版淘宝店铺商品

    接口标识 接口地址: 返回格式:json 请求方式:HTTP GET POST 请求示例:/app/taobao/shopGoods?apikey=<您自己的apikey> 请求参数( 标 ...

  9. 淘宝api app版淘宝店铺商品数量

    接口标识 接口地址: 返回格式:json 请求方式:HTTP GET POST 请求示例:/app/taobao/shopGoodsCount?apikey=<您自己的apikey> 请求 ...

最新文章

  1. 1.mysql数据库安装不成功的解决方案
  2. paperclip的id partition功能还是相当的给力,省得我们实现了,这个功能之前连想都没想到,...
  3. OutOfMemoryError/OOM/内存溢出异常实例分析--堆内存溢出
  4. day19_MD5加密_Apache DBUtils_监听器 知识回顾
  5. Kubernetes 会不会“杀死” DevOps?
  6. Drupal 为前台(Front page)页面添加区域(Regions)
  7. java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
  8. node模块加载机制。
  9. css flex布局
  10. 并发视频,怎么hold住高并发
  11. 通达信资金净流入公式_通达信当天净流入公式,通达信资金净流入公式
  12. 1. javascript 引擎Rhino源代码分析 简介
  13. 阿尔卡特交换机配置_ALCATEL-交换机配置手册(中文).doc
  14. dell服务器idrac配置
  15. 兔子繁殖问题----Python
  16. PHP使用FPDF的多字体解决
  17. 学完高性能计算后的发展怎么样?
  18. oracle 空值排序,排在最前面或者最后面
  19. 答题卡识别C++版本(一)
  20. python爬虫教材推荐 豆瓣_Python爬虫入门教程:豆瓣Top电影爬取

热门文章

  1. js美化系统默认Prompt仿APP移动端弹出,可以自行修改
  2. 极光IM系列之java后台集成
  3. 彬彬偷偷告诉了平行世界的其他杰哥们这个世界里的杰哥已经得到了阿伟,于是他们也来到了这个世界想要教阿伟登Dua郎,现在他们“成群杰队”地赶来了!
  4. 骨干网络演化释义以及TCP BBR的部署环境问题
  5. 芯片验证需要围绕DUT做什么?
  6. 小松鼠邮件服务器搭建(很简单的哦!)
  7. REST接口安全认证方式对比:API Key vs OAuth令牌 vs JWT
  8. 网络模型: Capsule
  9. 牛客网入门题--最大公约数与最小公倍数
  10. 医院信息化建设历程(1)概述