android跳转到淘宝详情页的小demo

demo的资源链接如下,有需求的童鞋自取:

https://github.com/wu2007369/android-demo/tree/master/taobaotest



该demo实现了以下三个功能:

1、存在淘宝app时跳转到淘宝商品详情界面(包括天猫商品)

2、存在淘宝app时跳转到淘宝店铺界面(包括天猫店铺)

3、不存在淘宝app时,通过WebView跳转到网页版淘宝(无论淘宝、天猫、商品、店铺)



****************************************************************************************************************************************************************************以下列出主要功能代码说明

void totianmao( String tbPath){
        Intent intent = new Intent();
        intent.setAction("Android.intent.action.VIEW");
        Uri uri = Uri.parse(tbPath); // 商品地址
        intent.setData(uri);
        intent.setClassName("com.taobao.taobao", "com.taobao.tao.detail.activity.DetailActivity");
        startActivity(intent);
    }

这是跳转淘宝内的商品详情页方法。

使用的是隐式Intent来跳转到app,通过设置Action、Url和要跳转到的Activity的包名类名,来确认目标。

商品的Url可以去淘宝的网页版里扣下来,满足我demo中的类似格式,淘宝app就能自动解析。

顺带提一句,天猫的商品和淘宝的商品Url,在这个方法中是共通的。如果只装了淘宝app,则都能起作用,但如果手机里装了淘宝app和天猫app的话,会发现打开的是不同的app。而如果没有装淘宝app,则会拜拜,这个问题见后文讨论。




void toshop(String tbPath){

//        String tbPath="https://detail.tmall.com/item.htm?spm=a1z0d.6639537.1997196601.3.45d07484uw9hPZ&id=565570128470";
        Intent intent = new Intent();
        intent.setAction("Android.intent.action.VIEW");
        Uri uri = Uri.parse(tbPath); // 商品地址
        intent.setData(uri);
        intent.setClassName("com.taobao.taobao", "com.taobao.android.shop.activity.ShopHomePageActivity");
        startActivity(intent);
    }

这是跳转淘宝内的店铺界面的方法。

依旧是隐式Intent,流程类似上一个方法,唯二不同的是url和包名之后的类名。

店铺的Url也可以去淘宝网页版里扣,满足demo中的类似格式(你会发现在网页版不同方式打开同一店铺,url都不一样,我的试验结果是关注店铺加入收藏,然后点开的店铺url,亲测可用有效),淘宝app就能自动解析。

其实淘宝app的商品界面,店铺界面的包名类名,网上都有曝光,还想尝试跳转到淘宝别的地方的朋友,可以自己去搜了玩玩。




public boolean checkPackage(String packageName)
    {
        if (packageName == null || "".equals(packageName))
            return false;
        try
        {
            this.getPackageManager().getApplicationInfo(packageName, PackageManager
                    .GET_UNINSTALLED_PACKAGES);
            return true;
        }
        catch (PackageManager.NameNotFoundException e)
        {
            return false;
        }
    }

这是用来检测,手机内淘宝app是否存在的方法。

首先验错,传入包名不可为空或字符串,否则返回false。

其次用PackageManager的getApplicationInfo方法,通过参数包名,获得已安装的app的信息,执行成功返回true。如果程序未安装,则会抛出错误,返回false。



我们的处理方法就是,如果存在手机淘宝,那就放心的跳,如果不存在,那就把url传给下一个Activity,然后让WebView跳转到网页。贴心的我自然是把简单的WebView用法也给写好啦。

觉得有帮助的看官们,点个赞哦


你可能感兴趣的:(android)