Android - 跳转到应用商店进行应用打分功能实现

转载请注明出处:https://blog.csdn.net/mythmayor/article/details/80279279

一、前言

一个比较常见的需求是,我们希望更多的人给我们千辛万苦开发出来的应用进行打分、评价,那么这时候我们可能希望在应用内部实现这样的功能。本篇博客将清晰的告诉你如何实现这一功能。

二、实现功能的思路或步骤

1.首先我们肯定要知道自己的应用都上线到哪些平台(应用商店)了。然后要根据这些已知平台来进行过滤,过滤出在自己的设备上安装了哪些。
2.将过滤出的这些应用商店展示给用户,如果没有安装任何相关应用商店则提示用户“暂无安装相关应用商店”。
3.用户点击了某应用商店之后,则跳转到该应用商店的APP详情页。
4.下面列出了比较核心的代码,可进行参考。

/**
  * 过滤出已经安装的包名集合
  *
  * @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;
 }
//自定义的AppInfo
public class AppInfo {
    private String appName;
    private Drawable appIcon;
    private String packageName;
    private int versionCode;
    private String versionName;

    public String getAppName() {
        return appName;
    }

    public void setAppName(String appName) {
        this.appName = appName;
    }

    public Drawable getAppIcon() {
        return appIcon;
    }

    public void setAppIcon(Drawable appIcon) {
        this.appIcon = appIcon;
    }

    public String getPackageName() {
        return packageName;
    }

    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }

    public int getVersionCode() {
        return versionCode;
    }

    public void setVersionCode(int versionCode) {
        this.versionCode = versionCode;
    }

    public String getVersionName() {
        return versionName;
    }

    public void setVersionName(String versionName) {
        this.versionName = versionName;
    }
}
/**
  * 跳转到应用市场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();
     }
 }

三、常见的应用商店及其包名

com.tencent.android.qqdownloader //腾讯应用宝
com.qihoo.appstore //360手机助手
com.baidu.appsearch //百度手机助手
com.xiaomi.market //小米应用商店
com.huawei.appmarket //华为应用商店
com.wandoujia.phoenix2 //豌豆荚
com.dragon.android.pandaspace //91手机助手
com.hiapk.marketpho //安智应用商店
com.yingyonghui.market //应用汇
com.tencent.qqpimsecure //QQ手机管家
com.mappn.gfan //机锋应用市场
com.pp.assistant //PP手机助手
com.oppo.market //OPPO应用商店
cn.goapk.market //GO市场
zte.com.market //中兴应用商店
com.yulong.android.coolmart //宇龙Coolpad应用商店
com.lenovo.leos.appstore //联想应用商店
com.coolapk.market”); //cool市场
com.meizu.mstore”); //魅族应用商店
cn.ninegame.gamemanager //阿里九游

猜你喜欢

转载自blog.csdn.net/mythmayor/article/details/80279279