Android 应用中跳转到应用市场评分示例

在开发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 里面注册<category android:name="android.intent.category.APP_MARKET" />的app * @param context * @return */ public ArrayList<String> getInstallAppMarkets(Context context) { //默认的应用市场列表,有些应用市场没有设置APP_MARKET通过隐式搜索不到 ArrayList<String> 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<String> pkgs = new ArrayList<String>(); 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<ResolveInfo> 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<String> getFilterInstallMarkets(Context context,ArrayList<String> pkgs) { appInfos.clear(); ArrayList<String> appList = new ArrayList<String>(); if (context == null || pkgs == null || pkgs.size() == 0) return appList; PackageManager pm = context.getPackageManager(); List<PackageInfo> 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里面跳转到应用市场去评分评价的几个方法了,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-10-31 13:46:36

Android 应用中跳转到应用市场评分示例的相关文章

Android应用自动跳转到应用市场详情页面的方法_Android

前言 众所周知在Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用. 那如何跳转到应用市场呢? 可能跳转的方法大家都是知道的,方法如下: public static void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Int

Android应用自动跳转到应用市场详情页面的方法

前言 众所周知在Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用. 那如何跳转到应用市场呢? 可能跳转的方法大家都是知道的,方法如下: public static void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Int

Android TextView中文字通过SpannableString设置属性用法示例_Android

本文实例讲述了Android TextView中文字通过SpannableString设置属性的方法.分享给大家供大家参考,具体如下: 在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. //创建一个 SpannableString对象 SpannableStri

Android开发中自定义ProgressBar控件的方法示例

本文实例讲述了Android开发中自定义ProgressBar控件的方法.分享给大家供大家参考,具体如下: 很简单,首先加载Drawable,在onMeasure设置好其区域大小, 然后使用canvas.clipRect绘图 public class ProgressView extends ImageView { private Drawable maskDraw; /** * 加载的进度 0-100 */ private int mProcess = 20; public ProgressV

Android开发中Activity创建跳转及传值的方法_Android

在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider). 今天所介绍的就是Android开发中的四大组件之一:Activity,其他那三大组件以后再进行介绍.说道Android中的Activity,如果你做过iOS开发的话,Activity类似于iOS中的ViewController(视图控制器).在应用中能看到的东西都是放在活动中的.活动是安卓开发比较重要的东

界面跳转-android 开发中界面的跳转

问题描述 android 开发中界面的跳转 我想设置一个监听器直接跳到android模拟器自带的无线和网络设置(Wireless&networks)界面,请大神帮个忙 解决方案 Intent wifiSettingsIntent = new Intent("android.settings.WIFI_SETTINGS"); startActivity(wifiSettingsIntent); 监听可以参考如下:http://blog.sina.com.cn/s/blog_67d

android项目出错-android项目中从一个Activity跳转到另外一个Activity发生空指针异常是什么原因造成的

问题描述 android项目中从一个Activity跳转到另外一个Activity发生空指针异常是什么原因造成的 android项目中从一个Activity跳转到另外一个Activity发生空指针异常是什么原因造成的 解决方案 具体得log信息啊.你把log 截取出来看看. 解决方案二: 你把logcat里的红字贴出来 解决方案三: 你把logcat里的红字贴出来 解决方案四: 你把logcat里的红字贴出来 解决方案五: 你把logcat里的红字贴出来

Android Activity中使用Intent实现页面跳转与参数传递的方法_Android

本文实例讲述了Android Activity中使用Intent实现页面跳转与参数传递的方法.分享给大家供大家参考,具体如下: 新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.O

Android编程中Intent实现页面跳转功能详解

本文实例讲述了Android编程中Intent实现页面跳转功能.分享给大家供大家参考,具体如下: 安卓四大组件:Activity.Service.Broadcast Receiver.Content Provider Intent实现页面之间跳转 1.无返回值 startActivity(intent) 2.有返回值 startActivityForResult(intent,requestCode); onActivityResult(int requestCode,int resultCod