《如何在我们自己的应用内打开京东、淘宝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.vephp.com/jiaocheng/14658.html
如果你是做京东的推广,需要带一些自己的参数,可以看看京东的文档。