Android:App 打开淘宝商品
一、准备工作
- 首先需要知道店铺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来显示。
public class TaoBaoHelper {
/**
* Check is installed package or not
*
* @param context context
* @param pkgName package name
* @return true:Installed;false:Not installed
*/
public static boolean isPkgInstalled(Context context, String pkgName) {
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(pkgName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
return packageInfo != null;
}
/**
* @param activityOrFragment
* @param taoBaoShopId 淘宝店铺id
* @param taoBaoGoodsId 淘宝商品id
* @param reqCode
*/
private static void openTaobao(ComponentCallbacks activityOrFragment, String taoBaoShopId,
String taoBaoGoodsId, int reqCode) {
try {
boolean shopEmpty = taoBaoShopId == null || TextUtils.isEmpty(taoBaoShopId);
boolean goodsEmpty = taoBaoGoodsId == null && TextUtils.isEmpty(taoBaoGoodsId);
if (shopEmpty && goodsEmpty) {
return;
}
Context context = null;
//Get context
if (activityOrFragment instanceof AppCompatActivity) {
context = (AppCompatActivity) activityOrFragment;
} else if (activityOrFragment instanceof Fragment) {
context = ((Fragment) activityOrFragment).getContext();
} else if (activityOrFragment instanceof Fragment) {
context = ((Fragment) activityOrFragment).getActivity();
}
if (isPkgInstalled(context, context.getString(R.string.taobao_package_name))) {
// If Taobao app has Installed
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
String uriString;
if (taoBaoShopId != null && !TextUtils.isEmpty(taoBaoShopId)) {
uriString = context.getString(R.string.taobao_app_shop, taoBaoShopId);
} else {
uriString = context.getString(R.string.taobao_app_goods, taoBaoGoodsId);
}
Uri uri = Uri.parse(uriString);
intent.setData(uri);
if (context == null) {
return;
}
//跳转
if (activityOrFragment instanceof AppCompatActivity) {
((AppCompatActivity) activityOrFragment).startActivityForResult(intent, reqCode);
} else if (activityOrFragment instanceof Fragment) {
((Fragment) activityOrFragment).startActivityForResult(intent, reqCode);
} else if (activityOrFragment instanceof Fragment) {
((Fragment) activityOrFragment).startActivityForResult(intent, reqCode);
}
} else {
// If Taobao app has not Installed
String uriString;
Intent intent = new Intent(context, WebViewActivity.class);
if (taoBaoShopId != null && TextUtils.isEmpty(taoBaoShopId)) {
uriString = context.getString(R.string.taobao_web_shop, taoBaoShopId);
} else {
uriString = context.getString(R.string.taobao_web_goods, taoBaoGoodsId);
}
intent.putExtra("tbLink", uriString);
context.startActivity(intent);
}
}catch (Exception e){
Toast.makeText(XcApplication.getsContext(),e.toString(),Toast.LENGTH_SHORT);
}
}
/**
* Shop
*
* @param activityOrFragment
* @param taoBaoShopId
* @param reqCode
*/
public static void openShopInTaobao(ComponentCallbacks activityOrFragment,
String taoBaoShopId, int reqCode) {
openTaobao(activityOrFragment, taoBaoShopId, null, reqCode);
}
/**
* Goods
*
* @param activityOrFragment
* @param taoBaoGoodsId
* @param reqCode
*/
public static void openGoodsInTaobao(ComponentCallbacks activityOrFragment,
String taoBaoGoodsId, int reqCode) {
openTaobao(activityOrFragment, null, taoBaoGoodsId, reqCode);
}
}