美文网首页AndroidWorld晚期代码癌患者Android开发
Android应用如何跳转到应用市场详情页面

Android应用如何跳转到应用市场详情页面

作者: 咻咻ing | 来源:发表于2016-09-03 12:11 被阅读9143次

获取双卡手机IMEI、IMSI
Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用。那如何跳转到应用市场呢?

可能跳转的方法大家都是知道的,方法如下:

public static void goToMarket(Context context, String packageName) {
    Uri uri = Uri.parse("market://details?id=" + packageName);
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    try {
        context.startActivity(goToMarket);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}

此方法支持应用宝、360手机助手、豌豆荚、小米商店等主流的应用市场,当手机上面装有多个应用市场时,则会弹出菜单让用户选择调转到哪个市场。那么,问题来了,如果这么简单就结束了,怎么还会有这篇文章呢?
 在红米Note2上测试时发现,调用此方法默认是直接调转到小米市场,那如果在小米手机上,想要跳转到应用宝或者其他的应用市场怎么办呢,方法自然是有的,如下:

public static void goToMarket(Context context, String packageName) {
    Uri uri = Uri.parse("market://details?id=" + packageName);
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    try {
        goToMarket.setClassName("com.tencent.android.qqdownloader", "com.tencent.pangu.link.LinkProxyActivity");
        context.startActivity(goToMarket);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}

看起来好像和第一个方法没什么区别,是的,只需要给多调用goToMarket.setClassName()方法,设置指定的应用去处理这个Intent事件,这样就可以在小米手机上跳转到应用宝的应用详情页面,而且,上一个方法如果在手机上装有多个应用市场时,会弹出菜单让用户选择,如果已经确定好要跳转到哪个应用市场时,也可使用此方法,直接跳转,省去中间用户选择的环节。
 但是上面方法的思路似乎并不能对所有的应用市场有效,哪天产品经理提出要跳转到三星的应用市场,毕竟三星手机在国内的占有率还是排前几位的,再使用上面的方法,发现懵逼了,三星市场竟然不支持这种方式,难怪三星手机在国内市场节节败退。不过再笔者的努力下终于找到了如下方法:

public static void goToSamsungappsMarket(Context context, String packageName) {
    Uri uri = Uri.parse("http://www.samsungapps.com/appquery/appDetail.as?appId=" + packageName);
    Intent goToMarket = new Intent();
    goToMarket.setClassName("com.sec.android.app.samsungapps", "com.sec.android.app.samsungapps.Main");
    goToMarket.setData(uri);
    try {
        context.startActivity(goToMarket);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}

不过,后来发现在乐视手机上面,乐视的应用市场也是不支持goToMarket()方法的,所以又专门调研了跳转乐视应用市场的方法,方法如下:

void goToLeTVStoreDetail(Context context, String packageName) {
        Intent intent = new Intent();
        intent.setClassName("com.letv.app.appstore", "com.letv.app.appstore.appmodule.details.DetailsActivity");
        intent.setAction("com.letv.app.appstore.appdetailactivity");
        intent.putExtra("packageName", packageName);
        context.startActivity(intent);
    }

以上方法,希望能帮助到有需要的人。

文章内容如有什么问题,欢迎指正。

微信扫码.png

相关文章

网友评论

  • 小破孩_4473:360手机助手的goToMarket.setClassName("com.tencent.android.qqdownloader", "com.tencent.pangu.link.LinkProxyActivity");第二个参数是什么呢,有那位知道的吗?如何获取。
  • 隰有荷:乐视就算了,后面我就不说了。。。
  • 河婆墟邓紫棋:能否分享下如何找到这个方法的?比如如何找到三星跳转的不同已经找到正确的方法
    咻咻ing:反编译他们的apk,去找支持的Scheme协议。
  • 后来Memory:楼主我分享一个网页出去,希望用户在其他的应用列入QQ,微信打开之后,能够跳转到各自手机的应用市场这该如何了
    咻咻ing:只能通过应用宝的微链接跳转到应用宝
    咻咻ing: @后来Memory 你想的有点多,从微信打开的网页哪个应用也跳转不了
  • SnapKit:如何判断三星 乐视手机呢?
    咻咻ing:这种刷出来的你能判断ROM吗
    SnapKit:@咻咻ing 这个不太严谨吧,得判断ROM吧万一三星的刷了MIUI了
    咻咻ing: @AndSync 通过Build.BRAND判断手机
  • 策马啸西风1214:谢谢,还有好多应用市场跳转不了,按规范来的话,像魅族就跳不了的。主要是安卓没有一个统一的规范,可苦了咱开发者了
  • 花香_Android:不错啊 顶一个!
  • SScience:看了下文章的日期~~想说的是,三星15年在中国大陆地区就已经是others了~~以前占有率也并不高 :stuck_out_tongue_closed_eyes:
  • offbye西涛:这个就是各应用市场实行不规范导致的 一般用第一种标准做法就可以了
    咻咻ing:@offbye西涛 是的,就是有些市场不按规范来:sweat::sweat:

本文标题:Android应用如何跳转到应用市场详情页面

本文链接:https://www.haomeiwen.com/subject/ibvkettx.html