安卓通过链接打开淘宝客户端
生活随笔
收集整理的這篇文章主要介紹了
安卓通过链接打开淘宝客户端
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在項目中遇到了一個需求,那就是安卓客戶端沒有集成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;}}}?
?
?
?
總結
以上是生活随笔為你收集整理的安卓通过链接打开淘宝客户端的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows同一局域网如何文件共享
- 下一篇: JAVA石头迷阵