《如何在我們自己的應用內打開京東、淘寶APP指定商品或者店鋪頁面?》要點:
本文介紹了如何在我們自己的應用內打開京東、淘寶APP指定商品或者店鋪頁面?,希望對您有用。如果有疑問,可以聯系我們。
相關主題:html5和webapp
如何在我們自己的應用內打開京東、淘寶指定的商品或者店鋪的頁面?
上代碼:
public class MainActivity extends AppCompatActivity { //---京東和淘寶的商鋪及商品ID private String TaoBaoShopId = "131259851"; //--耐凡眼鏡店 private String JDShopId = "1000004123"; //--京東小米官方旗艦店 private String TaoBaoGoodsId = "525249416835"; //--時尚潮流復古學生...眼鏡框 private String JDGoodsId = "4099139"; //--小米6詳情頁 //--1.打開京東或淘寶的店鋪 private String taobaoAppStr_shop = "taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id="+TaoBaoShopId+""; private String taobaoWebStr_shop = "https://shop.m.taobao.com/shop/shop_index.htm?shop_id="+TaoBaoShopId+""; private String jdAppStr_shop = "openApp.jdMobile://virtual?params={\"category\":\"jump\",\"des\":\"jshopMain\",\"shopId\":\""+JDShopId+"\",\"sourceType\":\"M_sourceFrom\",\"sourceValue\":\"dp\"}"; private String jdWebStr_shop = "http://shop.m.jd.com/?shopId="+JDShopId+""; //--2.打開京東或淘寶的商品詳情頁 private String taobaoAppStr_goods = "taobao://item.taobao.com/item.htm?id="+TaoBaoGoodsId+""; private String taobaoWebStr_goods = "https://item.taobao.com/item.htm?id="+TaoBaoGoodsId+""; private String jdAppStr_goods = "openApp.jdMobile://virtual?params={\"category\":\"jump\",\"des\":\"productDetail\",\"skuId\":\""+JDGoodsId+"\",\"sourceType\":\"JSHOP_SOURCE_TYPE\",\"sourceValue\":\"JSHOP_SOURCE_VALUE\"}"; private String jdWebStr_goods = "https://item.m.jd.com/product/"+JDGoodsId+".html"; //--3.京東和淘寶的包名 private String mJDMall = "com.jingdong.app.mall"; private String mTaoBao = "com.taobao.taobao"; /** * 1. 可以從第三方應用跳轉到QQ界面,并可以進入指定的QQ號碼的聊天界面(可以是陌生人QQ號). * String url="mqqwpa://im/chat?chat_type=wpa&uin=1642084864"; * startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); * //指定的QQ號只需要修改uin后的值即可。 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { findViewById(R.id.jump_to_jd).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //---jd if (isInstallByread(mJDMall)) { Toast.makeText(MainActivity.this, "京東已經安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(jdAppStr_shop)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(MainActivity.this, "京東沒有安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(jdWebStr_shop)); startActivity(intent); // loadApp(mJDMall); } } }); findViewById(R.id.jump_to_taobao).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //---taobao if (isInstallByread(mTaoBao)) { Toast.makeText(MainActivity.this, "淘寶已經安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(taobaoAppStr_shop)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(MainActivity.this, "淘寶沒有安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(taobaoWebStr_shop)); startActivity(intent); // loadApp(mTaoBao); } } }); findViewById(R.id.jump_to_jd_goods).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //---jd if (isInstallByread(mJDMall)) { Toast.makeText(MainActivity.this, "京東已經安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(jdAppStr_goods)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(MainActivity.this, "京東沒有安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(jdWebStr_goods)); startActivity(intent); // loadApp(mJDMall); } } }); findViewById(R.id.jump_to_taobao_goods).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //---taobao if (isInstallByread(mTaoBao)) { Toast.makeText(MainActivity.this, "淘寶已經安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(taobaoAppStr_goods)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(MainActivity.this, "淘寶沒有安裝", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(taobaoWebStr_goods)); startActivity(intent); // loadApp(mTaoBao); } } }); } /** * 判斷是否安裝目標應用 * * @param packageName 目標應用安裝后的包名 * @return 是否已安裝目標應用 */ private boolean isInstallByread(String packageName) { return new File("/data/data/" + packageName).exists(); } /** * 啟動目標應用 * * @param packageName 目標應用安裝后的包名 */ private void launchApp(String packageName) { PackageManager packageManager = this.getPackageManager(); Intent intent = packageManager.getLaunchIntentForPackage(packageName); startActivity(intent); } /** * 下載目標應用 * * @param packageName 目標應用安裝后的包名 */ private void loadApp(String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName);//id后面接包名 Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); }
淘寶的商品和店鋪跳轉還是很好處理的,只需要將https的協議頭換成淘寶對應的URL SCHEME(taobao://)就可以在APP中吊起淘寶對應的界面;但是京東的就比較坑爹了,雖然網上能查到這一段openApp.jdMobile://virtual?params={…},但是這里面的參數該怎么傳就不知道了,關鍵是我找了好多地方,都沒有找到,最后我發現京東分享的鏈接,在瀏覽器上會有這樣的 提示:
點擊后(手機上安裝有京東的APP),就能打開對應的店鋪或者商品,于是~ ,先狂笑三百聲,哈哈哈哈~~~~,網頁上肯定有我需要的參數。于是,我找了一個在手機瀏覽器上的京東店鋪的鏈接,然后用chrome打開,利用開發工具查看源碼。
我發現這個“立即打開”對應的響應代碼在這個位置,注意看
前面就是openApp.jdMobile://,我們找到了,關鍵在標記的第二個地方,看到
params后面的省略號了沒,這里面就是我們要的東西,把鼠標放上去。
這些就是我們需要的參數,
具體參考:http://www.snjht.com/jiaocheng/14658.html
如果你是做京東的推廣,需要帶一些自己的參數,可以看看京東的文檔。