admin管理员组文章数量:1560445
转载请注明出处:https://blog.csdn/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.market //中兴应用商店
com.yulong.android.coolmart //宇龙Coolpad应用商店
com.lenovo.leos.appstore //联想应用商店
com.coolapk.market”); //cool市场
com.meizu.mstore”); //魅族应用商店
cn.ninegame.gamemanager //阿里九游
版权声明:本文标题:Android - 跳转到应用商店进行应用打分功能实现 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727439149a1114778.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论