在开发Android App过程中,经常会遇见这样的功能。从当前的app跳转到一个应用商店并且跳转到自己app的详情页面,让用户给自己的App进行评分、评价,从而提高自己App的排名。下面介绍三种方法实现该功能。

方法一:通过系统隐式意图方式去调用应用市场app详情页

try{

Uri uri = Uri.parse("market://details?id="+getPackageName());

Intent intent = new Intent(Intent.ACTION_VIEW,uri);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

}catch(Exception e){

Toast.makeText(MainActivity.this, "您的手机没有安装Android应用市场", Toast.LENGTH_SHORT).show();

e.printStackTrace();

}

方法二:通过应用市场的搜索方法来调用app详情页

try {

Intent i = new Intent(Intent.ACTION_VIEW);

i.setData(Uri.parse("market://search?q="+getPackagename()));

startActivity(i);

} catch (Exception e) {

Toast.makeText(SettingActivity.this, "您的手机没有安装Android应用市场", Toast.LENGTH_SHORT).show();

e.printStackTrace();

}

这两个方法很简单易用,几行代码就可以实现调用应用市场,唯一的缺点就是如果手机安装多个应用市场,他所呈现的弹窗是系统自带风格,有时候我们需要自己定制自己的统一弹窗风格,这时候就需要通过其他方案来实现。

方法三:根据手机安装的应用市场,来定制自己所需要的风格

首先先获取手机上已经安装的应用市场

/**

* 获取已安装应用商店的包名列表

* 获取有在AndroidManifest 里面注册的app

* @param context

* @return

*/

public ArrayList getInstallAppMarkets(Context context) {

//默认的应用市场列表,有些应用市场没有设置APP_MARKET通过隐式搜索不到

ArrayList pkgList = new ArrayList<>();

pkgList.add("com.xiaomi.market");

pkgList.add("com.qihoo.appstore");

pkgList.add("com.wandoujia.phoenix2");

pkgList.add("com.tencent.android.qqdownloader");

pkgList.add("com.taptap");

ArrayList pkgs = new ArrayList();

if (context == null)

return pkgs;

Intent intent = new Intent();

intent.setAction("android.intent.action.MAIN");

intent.addCategory("android.intent.category.APP_MARKET");

PackageManager pm = context.getPackageManager();

List infos = pm.queryIntentActivities(intent, 0);

if (infos == null || infos.size() == 0)

return pkgs;

int size = infos.size();

for (int i = 0; i < size; i++) {

String pkgName = "";

try {

ActivityInfo activityInfo = infos.get(i).activityInfo;

pkgName = activityInfo.packageName;

} catch (Exception e) {

e.printStackTrace();

}

if (!TextUtils.isEmpty(pkgName))

pkgs.add(pkgName);

}

//取两个list并集,去除重复

pkgList.removeAll(pkgs);

pkgs.addAll(pkgList);

return pkgs;

}

接下来获取手机上已经安装的应用,过滤剩下应用市场包名和相关信息,这些信息可以在后面做一个弹窗之类的功能时候用到,appInfo里面包括了包名、应用名、icon、版本号等信息。

/**

* 过滤出已经安装的包名集合

* @param context

* @param pkgs 待过滤包名集合

* @return 已安装的包名集合

*/

public ArrayList getFilterInstallMarkets(Context context,ArrayList pkgs) {

appInfos.clear();

ArrayList appList = new ArrayList();

if (context == null || pkgs == null || pkgs.size() == 0)

return appList;

PackageManager pm = context.getPackageManager();

List installedPkgs = pm.getInstalledPackages(0);

int li = installedPkgs.size();

int lj = pkgs.size();

for (int j = 0; j < lj; j++) {

for (int i = 0; i < li; i++) {

String installPkg = "";

String checkPkg = pkgs.get(j);

PackageInfo packageInfo = installedPkgs.get(i);

try {

installPkg = packageInfo.packageName;

} catch (Exception e) {

e.printStackTrace();

}

if (TextUtils.isEmpty(installPkg))

continue;

if (installPkg.equals(checkPkg)) {

// 如果非系统应用,则添加至appList,这个会过滤掉系统的应用商店,如果不需要过滤就不用这个判断

if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {

//将应用相关信息缓存起来,用于自定义弹出应用列表信息相关用

AppInfo appInfo = new AppInfo();

appInfo.setAppName(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());

appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(getPackageManager()));

appInfo.setPackageName(packageInfo.packageName);

appInfo.setVersionCode(packageInfo.versionCode);

appInfo.setVersionName(packageInfo.versionName);

appInfos.add(appInfo);

appList.add(installPkg);

}

break;

}

}

}

return appList;

}

最后就是跳转到应用市场APP详情页的功能了,关于弹窗的逻辑这里就不详细描述了,想要实现的朋友可以根据自己的喜好去实现相应的功能,这里就提供一个点击事件功能

/**

* 跳转到应用市场app详情界面

* @param appPkg App的包名

* @param marketPkg 应用市场包名

*/

public void launchAppDetail(String appPkg, String marketPkg) {

try {

if (TextUtils.isEmpty(appPkg))

return;

Uri uri = Uri.parse("market://details?id=" + appPkg);

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

if (!TextUtils.isEmpty(marketPkg))

intent.setPackage(marketPkg);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

} catch (Exception e) {

e.printStackTrace();

}

}

以上就是在app里面跳转到应用市场去评分评价的几个方法了,如果有什么更好的方法欢迎一起交流

android跳转应用市场搜索,Android 应用中跳转到应用市场评分相关推荐

  1. html静态页面跳转传值,在静态页面html中跳转传值

    在html中通过"?"传值--------静态传值 在跳转到的页面index2.html中接收----var name=UrlParm.parm("name") ...

  2. 市场调研—全球与中国手推式扫地机市场现状及未来发展趋势

    [报告篇幅]:126 [报告图表数]:171 [报告出版时间]:2021年1月 2019年,全球手推式扫地机市场规模达到了xx亿元,预计2026年将达到xx亿元,年复合增长率(CAGR)为xx%. 本 ...

  3. android 市场自动安装软件,Android 应用中跳转到应用市场评分示例

    在开发Android App过程中,经常会遇见这样的功能.从当前的app跳转到一个应用商店并且跳转到自己app的详情页面,让用户给自己的App进行评分.评价,从而提高自己App的排名.下面介绍三种方法 ...

  4. H5页面跳转至应用市场(Android/ios)(判断是Android还是ios)

    var u = navigator.userAgent;var isAndroid = u.indexOf("Android") > -1 || u.indexOf(&quo ...

  5. 在Android Studio中搜索整个项目中所有出现的字符串

    本文翻译自:Search all the occurrences of a string in the entire project in Android Studio I've just start ...

  6. android mvp模式例子_关于Android市场这件事,没有饱和的市场只有饱和的思维

    前言 早在几年之前,我们就一直在讨论Android程序员已经饱和的这个问题,直到2020年,Android程序员也没有饱和,相反对高级程序员的需求越来越大. 为什么会有Android程序员已经饱和的错 ...

  7. android动态添加的页面怎么加功能_Android跳转应用安装页面

    一.低版本跳转方式 Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(uri,"application ...

  8. Android 四大组件 —— 活动(活动的隐式跳转)

    上一篇我们讨论了活动的显示跳转,现在来学习活动的隐式跳转 相比于显式Intent,隐式Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和cat ...

  9. android 安卓市场,安卓市场(Android Market).doc

    安卓市场(Android Market) 安卓市场(Android Market) Android (HiMarket) China market is the earliest and larges ...

最新文章

  1. 内行的AI盛会——北京智源大会带你洞见未来!
  2. 极索(Gsuo)推出新版地图采用Gmap设计思路
  3. 台式电脑计算机无法启动 启动修复,Win10启动修复无法修复你的电脑解决方法
  4. Log4net之配置文件
  5. mysql 常用命令 | 表间 弱关联 join
  6. 将桌面文件复制到/etc目录
  7. 信息学奥赛一本通(2061:【例1.2】梯形面积)
  8. Leetcode PHP题解--D68 283. Move Zeroes
  9. E-Learning是学习系统而不是教育系统
  10. 汇编语言二进制转十进制_汇编语言笔记(一)——基础知识
  11. cookie读、写、删除
  12. 二进制 八进制 十进制 转换
  13. 什么叫黑名单?黑名单还能贷款吗?
  14. 商场触摸互动广告机有哪些功能
  15. 路由器修改dns服务器,怎么重新设置路由器dns
  16. 谷歌浏览器播放视频只有声音没有画面解决方法
  17. 【量化课程】01_投资与量化投资
  18. 苹果手机有锁那些事,小心被坑
  19. 安卓设置keychain_IOS的keychain的三种使用方法
  20. 【图像分割】基于麻雀算法优化Kmeans实现图像分割附Matlab代码

热门文章

  1. 从一个死锁看mysql innodb的锁机制
  2. Fork and Join: Java Can Excel at Painless Parallel Programming Too!---转
  3. DNS解析过程详解【转】
  4. UIbutton 圆角和边线
  5. Tomcat架构(二)
  6. Oracle 用户表空间的创建和授权
  7. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...
  8. linux双机脚本pkg如何生效,linux里命令pkg config工具的使用
  9. java将0到9随机输出_生成0到9之间的随机整数
  10. word2vec相似度计算_图解word2vec(原文翻译)