前言
最近在做一个需求,需要从自己APP进入到系统的应用市场
方便用户在应用市场给自己的APP打分
于是查阅了一些资料,下面说一下实现方法
实现方案
一般来说,最简单的方案就是这样:
val uri = Uri.parse("market://details?id=" + 你自己应用的包名)val intent=Intent(Intent.ACTION_VIEW, uri)if (intent.resolveActivity(this) != null) {startActivity(intent)}else{showToast(mActivity, "您的手机暂无应用市场,请下载后重试,感谢您的支持~")}
其中resolveActivity用来判断是否可以正确拉起应用市场,不能的话就提示用户
经过试验,发现的确是可行的,但是也发现了一些问题:
1:如果手机安装了多个应用市场,会弹框提示你选择具体的应用市场
2:无法指定具体的应用市场页面,比如我想直接进打分页面,这方面是系统处理,不可控制
针对第二个问题,暂时没想到好的解决办法
第一个的话,可以通过新增方法来指定对应的应用市场
指定应用市场
我们可以先利用Build.BRAND这个属性获取我们手机的品牌
然后指定对应品牌的应用市场
比如如果你获取的是华为的品牌
就可以指定华为的应用市场
获取品牌的方法可以这样处理:
private fun getBrandType(): String {val brandType = when (Build.BRAND.uppercase(Locale.getDefault())) {"HUAWEI" -> "HUAWEI""XIAOMI" -> "XIAOMI""REDMI" -> "REDMI""HONOR" -> "HONOR""OPPO" -> "OPPO""VIVO" -> "VIVO"else -> {"OTHER"}}return brandType}
指定华为应用市场,只需要对intent多加这一行:
intent.setPackage("com.huawei.appmarket")
这样就可以直接跳到华为应用市场了
最后,附上不同品牌机型的应用市场的包名:
目前国内主流的应用市场有:腾讯应用宝:com.tencent.android.qqdownloader 360手机助手:com.qihoo.appstore 百度手机助手:com.baidu.appsearch 小米应用商店:com.xiaomi.market 华为应用商店:com.huawei.appmarket QQ手机管家:com.tencent.qqpimsecure OPPO应用商店:com.oppo.market 中兴应用商店:zte.com.market 联想应用商店:com.lenovo.leos.appstore 可以根据公司投放的渠道使用相应应用市场的包名~