博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】Android应用如何跳转到应用市场详情页面
阅读量:6887 次
发布时间:2019-06-27

本文共 2343 字,大约阅读时间需要 7 分钟。

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);    }

 

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

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

from:http://www.jianshu.com/p/2165acb5d1eb

转载地址:http://rwxbl.baihongyu.com/

你可能感兴趣的文章
SpringBoot 全局统一记录日志
查看>>
mysql数据统计技巧备忘录
查看>>
Functor and Monad in Swift
查看>>
C# String.Format的格式限定符与Format方法将多个对象格式化一个字符串原理
查看>>
zookeeper的监控
查看>>
JPA(六):映射关联关系------映射单向一对多的关联关系
查看>>
SPOJ1811 LCS - Longest Common Substring(后缀自动机)
查看>>
linux调试工具glibc的演示分析-core dump double free【转】
查看>>
Top 22 Free Responsive HTML5 Admin & Dashboard Templates 2018
查看>>
适合初学者的python实际例子
查看>>
我的第一个python web开发框架(25)——定制ORM(一)
查看>>
Android padding 和margin
查看>>
IOS UIView 01-View开始深入 绘制像素到屏幕上
查看>>
在Android中使用Protocol Buffers(中篇)
查看>>
Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结
查看>>
八种架构设计模式及其优缺点概述
查看>>
Django的AbstractUser的几大步骤
查看>>
Caching in Presto
查看>>
SpringMVC拦截器详解
查看>>
Python3+pyshark捕获数据包并保存为文件
查看>>