Android App打开淘宝(店铺或商品)
目录
准备工作
逻辑
具体实现
在官方淘宝开放平台查询打开淘宝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
具体实现
- 判断本地是否安装淘宝客户端
/*** 检测该包名所对应的应用是否存在** @param packageName* @return*/private static boolean checkPackage(String packageName) {return new File("/data/data/" + packageName).exists();}
其中packageName传入值为淘宝app包名(即com.taobao.taobao)
根据判断打开淘宝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);}}
调用
/*** 查看淘宝商铺** @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);}
用到资源
<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打开淘宝(店铺或商品)相关推荐
- 获取淘宝店铺所有商品API分享 店铺所有商品接口 店铺ID取商品 商品销量排序接口
获取淘宝店铺所有商品API,是一种可以帮助开发者快速获取淘宝店铺全部商品信息的方式.同时,还支持翻页显示.按价格销量排序等.本文将介绍如何API接口获取特定店铺的所有商品,以及需要注意的事项. 一.申 ...
- API电商平台“淘宝店铺所有商品接口”调用示例
API电商平台"淘宝店铺所有商品接口"调用示例 以下是行业内了解到的一些情况,本帖只展示部分代码,需要更多API调试请移步注册API账号登录 - 跨境电商平台接口提供商 数据采集公 ...
- 极客日报:中国批准AMD收购赛灵思;微信可直接打开淘宝链接购买商品;马斯克称今年将实现全自动驾驶
一分钟速览新闻点! 中国附加限制性条件批准AMD收购赛灵思 张一鸣再退出多家字节跳动关联公司职务 腾讯计划对斗鱼进行私有化 2022职场摸鱼报告:超9成年轻人平时工作会摸鱼 微信可直接打开淘宝链接购买 ...
- 淘宝店铺所有商品接口,商品列表接口,1688店铺所有商品接口,商品列表接口
以下是行业内了解到的一些情况,本帖只展示部分代码,需要更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Turbo 根据店铺id ...
- 获取淘宝店铺所有商品数据
通过店铺页面源代码获取shopId参数或者通过商品详情接口获取shopId <meta name="microscope-data"content="pageId= ...
- 如何让淘宝店铺的商品能自动发货到旺旺
很多朋友在淘宝购买东西,特别是购买一些虚拟物品,只要一拍下,马上旺旺就自动发过来了. 很奇怪人家店铺是怎么实现24小时无人职守自动发货的,其实这些店铺的卖家都是使用了淘宝服务市场上的一个服务软件,下面 ...
- 淘宝api app版淘宝店铺商品搜索
接口标识 接口地址:/app/taobao/shopGoodsSearch 返回格式:json 请求方式:HTTP GET POST 请求示例:/app/taobao/shopGoodsSearch? ...
- 淘宝api app版淘宝店铺商品
接口标识 接口地址: 返回格式:json 请求方式:HTTP GET POST 请求示例:/app/taobao/shopGoods?apikey=<您自己的apikey> 请求参数( 标 ...
- 淘宝api app版淘宝店铺商品数量
接口标识 接口地址: 返回格式:json 请求方式:HTTP GET POST 请求示例:/app/taobao/shopGoodsCount?apikey=<您自己的apikey> 请求 ...
最新文章
- 1.mysql数据库安装不成功的解决方案
- paperclip的id partition功能还是相当的给力,省得我们实现了,这个功能之前连想都没想到,...
- OutOfMemoryError/OOM/内存溢出异常实例分析--堆内存溢出
- day19_MD5加密_Apache DBUtils_监听器 知识回顾
- Kubernetes 会不会“杀死” DevOps?
- Drupal 为前台(Front page)页面添加区域(Regions)
- java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
- node模块加载机制。
- css flex布局
- 并发视频,怎么hold住高并发
- 通达信资金净流入公式_通达信当天净流入公式,通达信资金净流入公式
- 1. javascript 引擎Rhino源代码分析 简介
- 阿尔卡特交换机配置_ALCATEL-交换机配置手册(中文).doc
- dell服务器idrac配置
- 兔子繁殖问题----Python
- PHP使用FPDF的多字体解决
- 学完高性能计算后的发展怎么样?
- oracle 空值排序,排在最前面或者最后面
- 答题卡识别C++版本(一)
- python爬虫教材推荐 豆瓣_Python爬虫入门教程:豆瓣Top电影爬取