最近在项目中遇到了一个需求,那就是安卓客户端没有集成SDK,通过链接打开淘宝客户端。在网上搜索了很多,自己综合并总结了一下,记录下来。

思路:首先判断手机上是否安装有淘宝客户端。如果有就跳转淘宝,如果没有则跳转网页。

 if (checkPackage(mContext, "com.taobao.taobao")) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse(YourUrlPath);// 你的商品地址intent.setData(uri);
//       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//此句代码决定是否在APP内打开淘宝
//       intent.setClassName("com.taobao.taobao", "com.taobao.tao.detail.activity.DetailActivity");//商品详情地址
//       intent.setClassName(“com.taobao.taobao”,”com.taobao.tao.shop.router.ShopUrlRouterActivity”);  //商铺地址    没测试过startActivity(intent);} else {}
public static boolean checkPackage(Context context, String packageName) {if (packageName == null || "".equals(packageName))return false;try {context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);return true;} catch (PackageManager.NameNotFoundException e) {return false;}}

除此之外,项目中还会遇到在自己的APP中打开第三方的APP。方法如下:

/*** 打开本地第三方应用** @param pkg 第三方应用的包名* @param cls 第三方应用的进入的第一个Activity*/
private void openApp(String pkg, String cls) {ComponentName componet = new ComponentName(pkg, cls);Intent intent = new Intent();intent.setComponent(componet);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);
}

获取第三方应用的包名和进入的第一个Activity的方法如下:

private void getPkgAndCls(){Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);PackageManager mPackageManager = this.getPackageManager();List<ResolveInfo> mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);//按包名排序Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));for(ResolveInfo res : mAllApps){//该应用的包名和主ActivityString pkg = res.activityInfo.packageName;String cls = res.activityInfo.name;LogUtil.i("data===","===pkg===" +pkg  );LogUtil.i("data===","===cls===" + cls );}
}
public class ShopAppUtil {public static void openTaoBaoApp(Context context, String title, String url) {Log.i("data===", "===url===" + url);if (checkPackage(context, "com.taobao.taobao")) {if (url.startsWith("https://")) {url = url.replaceFirst("https://", "taobao://");}if (url.startsWith("http://")) {url = url.replaceFirst("http://", "taobao://");}if (url.startsWith("tbopen://")) {url = url.replaceFirst("tbopen://", "taobao://");}Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse(url);intent.setData(uri);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);} else {openWebView(context, title, url);}}public static void openTianMaoApp(Context context, String title, String url) {if (checkPackage(context, "com.tmall.wireless")) {if (url.startsWith("https://")) {url = url.replaceFirst("https://", "tmall://");}Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse(url);intent.setData(uri);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);} else {openWebView(context, title, url);}}public static void openJingDongApp(Context context, String title, String url) {if (checkPackage(context, "com.jingdong.app.mall")) {if (url.startsWith("https://")) {url = url.replaceFirst("https://", "jingdong://");}Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse(url);intent.setData(uri);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);} else {openWebView(context, title, url);}}public static void openPinDuoDuoApp(Context context, String title, String url) {if (checkPackage(context, "com.xunmeng.pinduoduo")) {if (url.startsWith("https://mobile.yangkeduo.com/app.html?launch_url=")) {url = url.replaceFirst("https://mobile.yangkeduo.com/app.html?launch_url=", "pinduoduo://com.xunmeng.pinduoduo/");}Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse("pinduoduo://com.xunmeng.pinduoduo/" + url);intent.setData(uri);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);} else {openSystemWeb(context, url);}}public static void openWebView(Context context, String title, String url) {if (url.startsWith("taobao://")) {url = url.replaceFirst("taobao://", "https://");}if (url.startsWith("tbopen://")) {url = url.replaceFirst("tbopen://", "https://");}if (url.startsWith("tmall://")) {url = url.replaceFirst("tmall://", "https://");}if (url.startsWith("yangkeduo://")) {url = url.replaceFirst("yangkeduo://", "https://");}if (url.startsWith("pinduoduo://")) {url = url.replaceFirst("pinduoduo://", "https://");}
//        Intent intent = new Intent(context, WebViewActivity.class);
//        intent.putExtra(WebViewActivity.KEY_TITLE, title);
//        intent.putExtra(WebViewActivity.KEY_URL, url);
//        context.startActivity(intent);}public static void openSystemWeb(Context context, String url) {try {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse(url);intent.setData(content_url);context.startActivity(intent);} catch (Exception e) {e.printStackTrace();}}public static boolean checkPackage(Context context, String packageName) {if (packageName == null || "".equals(packageName)) return false;try {context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);return true;} catch (PackageManager.NameNotFoundException e) {return false;}}}

安卓通过链接打开淘宝客户端相关推荐

  1. iOS 类似复制链接打开淘宝APP后弹出页面功能

    写在前面 我们应该都有用过这个功能,你的朋友微信给你分享了一个淘宝里面的商品链接,然后当你复制这个链接打开淘宝APP的时候,就会弹出一个弹窗,像这样: example.PNG 这个功能想必大家都挺熟悉 ...

  2. 安卓手机网页打开淘宝总是弹出应用市场

    手机上不想装淘宝的app,但有时候又需要查一下淘宝上的东西的价格却遇到标题中的问题. 目前有两种方法,只针对chrome浏览器. 第一是打开新的无痕标签页 第二是请求切换到桌面版网站 转载于:http ...

  3. 在自己的app中打开淘宝

    需求:在app中打开淘宝客户端,包括打开店铺和商品 1)打开商品: Intent intent = new Intent(); intent.setAction("android.inten ...

  4. 极客日报:中国批准AMD收购赛灵思;微信可直接打开淘宝链接购买商品;​马斯克称今年将实现全自动驾驶

    一分钟速览新闻点! 中国附加限制性条件批准AMD收购赛灵思 张一鸣再退出多家字节跳动关联公司职务 腾讯计划对斗鱼进行私有化 2022职场摸鱼报告:超9成年轻人平时工作会摸鱼 微信可直接打开淘宝链接购买 ...

  5. 微信可以打开淘宝链接,淘宝也在测试微信支付,但真的都很别扭

    微信开了门,淘宝也在开窗,但都还只是一条缝的那种. 近日 " 淘宝内测微信支付 " 的消息引发关注.据多家媒体报道,部分用户在淘宝付款时发现了 " 微信扫码支付 &quo ...

  6. 重大利好:微信可以打开淘宝和抖音链接【全平台进销存软件】

    大家好,我是小编v兔.这两天,对电商行业最利好的消息,就是微信可以打开淘宝和抖音了.那么,这意味着什么呢?意味着流量或将全线打通,也就是公域与私域的无缝连接. 大家都知道,现在的谁手里握着流量,谁就有 ...

  7. 使用URL SCHEME启动淘宝客户端并跳转到某个商品页面的方法

    // 构建淘宝客户端协议的 URLNSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"taobao://item.t ...

  8. 当打开淘宝的那一刻,它就知道你想要的是什么

    在当今人们的日常生活中,手机占据了重要的角色.在大多数人的手机里,已经装满了各种五花八门的手机应用,无时无刻不在想着瓜分我们的时间. 很多时候,我们惊奇的发现,手机上的应用越用越聪明,智能手机真的越用 ...

  9. 点击微信内网页a标签直接跳转打开淘宝APP的方法实例

    点击微信里面的网页a标签,就可以跳转到预设的APP页面,不需要通过浏览器唤起APP 代码如下: <a href="https://t.asczwa.com/taobao?backurl ...

最新文章

  1. HarmonyOS 设置图标在Text 旁边
  2. IT人士还是要善待自己
  3. 编译QT出错 Basic XLib functionality test failed!
  4. 《学习Opencv》第五章 习题6
  5. js获取当前url_javascript如何获取当前URL的主机名?
  6. 使用临时表的另外一种方式
  7. Python里面如何拷贝一个对象?
  8. geddy mysql_以ToDoList应用来学习Geddy
  9. 新兴市场成为联想如何7年超越三星的胜负关键
  10. 64java下载_java软件下载|java64 v8.0 官方版-520下载站
  11. mac 无法对计算机进行更改,解析深度技术win10 MAC不能修改的原因和解决成功的技巧...
  12. Maya用样条线制作面片头发
  13. ai的布尔运算在哪_在AI中如何进行布尔运算
  14. 重装系统时出现windows root\system32\ntoskrnl.exe 损坏或者丢失?解决方法。。。。。。
  15. 混合云是什么,混合云是怎么工作的?
  16. bigemap高德离线地图开发教程
  17. MIME type和后缀名(扩展名)之间的关系
  18. 【链表】判断链表是否有环-快慢指针
  19. Correlation wave-front sensing algorithms for Shack-Hartmann-based Adaptive Optics using a point sou
  20. linux操作系统安装phonopy

热门文章

  1. C语言编程>第一周 ③ 输入某年某月某日,判断这一天是这一年的第几天
  2. 做一名有幸福感的计算机教师,做一名具有幸福感的教师
  3. 【闲书杂谈】《断舍离》——[日]山下英子
  4. 计算机贴保密标识,保密标贴粘贴位置说明
  5. 最受欢迎的海外服务器,优缺点都给你整理好了
  6. 2021年最新最全面的Java视频教程!!!
  7. Myabtis-plus中IService接口理解
  8. 【转载】HTML5新特性浅谈
  9. 华为云在重庆又“火”了一把
  10. 2017年BEC剑桥商务英语考试指南