应用内打开京东、淘宝指定商品或店铺页面
2017-06-28 18:54
961 查看
1、打开第三方应用指定界面
要想打开第三方APP指定的界面需要 知道该App 的 URL SCHEME,这里我列举一些,具体的可以在网上搜索到。淘宝: taobao://
微博: weibo://qrcode
微信: weixin://scanqrcode
支付宝: alipayqr://platformapi/startapp?saId=10000007
豆瓣: douban://
京东: openApp.jdMobile://virtual?params={参数}
快递100查询 m.kuaidi100.com/index_a
电话 mobilephone://
备忘录 mobilenotes://
Chrome谷歌浏览器 googlechrome://
12306订票助手 trainassist://
金山词霸 com.kingsoft.powerword.6://
节奏大师 tencentrm://
飞信 fetion://
豆瓣FM doubanradio://
大智慧 dzhiphone://
布卡漫画 buka://
爱奇艺PPS ppstream://
哔哩哔哩动画 bilibili://
56视频 com.56Video://
365日历 rili365://
58同城 wbmain://
遇见 iaround://
陌陌 momochat://
有道词典 yddict://
优酷 youku://
掌阅iReader iReader://
天涯社区 tianya://
天气通Pro sinaweatherpro://
天气通 sinaweather://
墨迹天气 rm434209233MojiWeather://
腾讯新闻 qqnews://
腾讯微云 weiyun://
腾讯地图 sosomap://
淘宝旅行 taobaotravel://
人人 renrenios://
2、功能需求
在我们自己的应用内打开京东、淘宝指定的商品或者店铺的页面,废话不多说,直接上代码: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); }
3、UI布局
4、补充
淘宝的商品和店铺跳转还是很好处理的,只需要将https的协议头换成淘宝对应的URL SCHEME(taobao://)就可以在APP中吊起淘宝对应的界面;但是京东的就比较坑爹了,虽然网上能查到这一段openApp.jdMobile://virtual?params={…},但是这里面的参数该怎么传就不知道了,关键是我找了好多地方,都没有找到,最后我发现京东分享的链接,在浏览器上会有这样的 提示:点击后(手机上安装有京东的APP),就能打开对应的店铺或者商品,于是~ ,先狂笑三百声,哈哈哈哈~~~~,网页上肯定有我需要的参数。于是,我找了一个在手机浏览器上的京东店铺的链接,然后用chrome打开,利用开发工具查看源码。
我发现这个“立即打开”对应的响应代码在这个位置,注意看
前面就是openApp.jdMobile://,我们找到了,关键在标记的第二个地方,看到
params后面的省略号了没,这里面就是我们要的东西,把鼠标放上去。
这些就是我们需要的参数,你可以右键copy出来再复制到你的代码中,图有点小,不过可以右键在新标签页中打开,这样就可以看清楚了。
好了,大功告成!!O(∩_∩)O~
相关文章推荐
- ios打开手机另一个应用的指定的页面
- 淘宝京东购物车价格计算,商品店铺联动js
- 安卓 跳转淘宝、京东app,并打开商品详情页
- 如何打开小米,oppo,华为等手机的系统应用的指定页面
- 如何打开小米,oppo,华为等手机的系统应用的指定页面
- 不能打开淘宝单个商品页面
- 用AJAX模仿IFRAME 在指定DIV打开页面
- 在应用中调用 Wap 浏览器 并打开指定URL
- 在指定框架打开页面
- 在应用中调用 Wap 浏览器 并打开指定URL
- 【HTML】打开页面时按照指定的URL直接跳转到另一新页面
- 9、如何控制框架页面或<iframe>内嵌页面在指定页面(区域)打开页面? [除了div+css,框架页面也不能忘记]
- 网页打开完成后指定时间页面居中弹出广告
- 如何点击链接直接跳转到app store指定应用下载页面
- 应用中打开app store的评论页面和下载页面
- 直接跳转到app store指定应用页面或评论页面
- 如何点击链接直接跳转到app store指定应用下载页面
- window.open打开的页面标题能不能自己指定
- 模式对话框中应用dtree时打开新页面