Android App打开淘宝(店铺或商品)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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
具體實現
其中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打开淘宝(店铺或商品)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 现在完成时的被动语态和动词的过去分词做形
- 下一篇: 单烤FPU怎么操作 单烤FPU多少度可以
