admin管理员组文章数量:1560453
完整代码:
/**
* 跳转到本机应用市场
*/
object MarketTools {
const val HUAWEI_BRAND = "HUAWEI";//HUAWEI_PACKAGE_NAME
const val HONOR_BRAND = "HONOR";//HUAWEI_PACKAGE_NAME
const val OPPO_BRAND = "OPPO";//OPPO_PACKAGE_NAME
const val MEIZU_BRAND = "MEIZU";//MEIZU_PACKAGE_NAME
const val VIVO_BRAND = "VIVO";//VIVO_PACKAGE_NAME
const val XIAOMI_BRAND = "XIAOMI";//XIAOMI_PACKAGE_NAME
const val LENOVO_BRAND = "LENOVO";//LIANXIANG_PACKAGE_NAME //Lenovo
const val ZTE_BRAND = "ZTE";//ZTE_PACKAGE_NAME
const val XIAOLAJIAO_BRAND = "XIAOLAJIAO";//ZHUOYI_PACKAGE_NAME
const val QH360_BRAND = "360";//QH360_PACKAGE_NAME
const val NIUBIA_BRAND = "NUBIA";//NIUBIA_PACKAGE_NAME
const val ONE_PLUS_BRAND = "ONEPLUS";//OPPO_PACKAGE_NAME
const val MEITU_BRAND = "MEITU";//MEITU_PACKAGE_NAME
const val SONY_BRAND = "SONY";//GOOGLE_PACKAGE_NAME
const val GOOGLE_BRAND = "GOOGLE";//GOOGLE_PACKAGE_NAME
const val HTC_BRAND = "HTC";//未知应用商店包名
const val ZUK_BRAND = "ZUK";//未知应用商店包名
const val OPPO_PACKAGE_NAME = "com.oppo.market";//oppo
const val VIVO_PACKAGE_NAME = "com.bbk.appstore";//vivo
const val HUAWEI_PACKAGE_NAME = "com.huawei.appmarket";//华为
const val QH360_PACKAGE_NAME = "com.qihoo.appstore";//360
const val XIAOMI_PACKAGE_NAME = "com.xiaomi.market";//小米
const val MEIZU_PACKAGE_NAME = "com.meizu.mstore";//,魅族
const val LIANXIANG_PACKAGE_NAME = "com.lenovo.leos.appstore";//联想
const val ZTE_PACKAGE_NAME = "zte.market";//zte
const val ZHUOYI_PACKAGE_NAME = "com.zhuoyi.market";//卓易
const val GOOGLE_PACKAGE_NAME = "com.android.vending";//google
const val NIUBIA_PACKAGE_NAME = "com.nubia.neostore";//努比亚
const val MEITU_PACKAGE_NAME = "com.android.mobile.appstore";//美图
const val BAIDU_PACKAGE_NAME = "com.baidu.appsearch";//baidu
const val TENCENT_PACKAGE_NAME = "com.tencent.android.qqdownloader";//应用宝
const val PPZHUSHOU_PACKAGE_NAME = "com.pp.assistant";//pp助手
const val ANZHI_PACKAGE_NAME = "com.goapk.market";//安智市场
const val WANDOUJIA_PACKAGE_NAME = "com.wandoujia.phonenix2";//豌豆荚
const val SUONI_PACKAGE_NAME = "com.android.vending";//索尼
private const val schemaUrl = "market://details?id="
const val SCHEMA_URL_DINGDING = "com.alibaba.android.rimet"
/**
* 跳转到Google Play
*/
fun startGooglePlay(mContext: Context, mPackageName : String) : Boolean {
//检测谷歌Play是否在手机上安装,如果安装,则跳转
val isExit:Boolean = isCheckMarket(GOOGLE_PACKAGE_NAME, mContext);
if (isExit) {
//跳转Google Play
startMarket(mContext, mPackageName, GOOGLE_PACKAGE_NAME);
return true;
}
// ToastUtils.showLong("Please install Google Play.")
val intent: Intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse("https://play.google/store/apps/details?id=" + mPackageName)
mContext.startActivity(intent)
return false
}
/***
* 不指定包名
* @param mContext
*/
fun startMarket(mContext: Context) {
val mPackageName = mContext.packageName;//得到包名
startMarket(mContext, mPackageName)
}
/**
* 指定包名
*
* @param mContext
* @param mPackageName
*/
fun startMarket(mContext : Context , mPackageName : String ) : Boolean {
try {
//获得手机厂商
val deviceBrand = getDeviceBrand()
//根据厂商获取对应市场的包名
val brandName: String = deviceBrand.toUpperCase();//大写
if (TextUtils.isEmpty(brandName)) {
Log.e("MarketTools", "没有读取到手机厂商~~");
return false;
}
val marketPackageName: String = getBrandName(brandName);
if (marketPackageName.isEmpty()) {
//手机不再列表里面,去尝试寻找
//检测百度和应用宝是否在手机上安装,如果安装,则跳转到这两个市场的其中一个
val isExit1:Boolean = isCheckMarket(BAIDU_PACKAGE_NAME, mContext);
if (isExit1) {
//跳转百度商场
startMarket(mContext, mPackageName, BAIDU_PACKAGE_NAME);
return true;
}
val isExit2: Boolean = isCheckMarket(TENCENT_PACKAGE_NAME, mContext);
if (isExit2) {
//跳转应用宝
startMarket(mContext, mPackageName, TENCENT_PACKAGE_NAME);
return true;
}
}
startMarket(mContext, mPackageName, marketPackageName);
return true;
} catch (anf: ActivityNotFoundException ) {
Log.e("MarketTools", "要跳转的应用市场不存在!");
} catch (e: Exception ) {
Log.e("MarketTools", "其他错误:" + e.message);
}
return false;
}
/***
* 指定包名,指定市场
* @param mContext
* @param mPackageName
* @param marketPackageName
*/
fun startMarket(mContext : Context , mPackageName : String , marketPackageName: String ) {
try {
openMarket(mContext, mPackageName, marketPackageName);
} catch (anf: ActivityNotFoundException ) {
Log.e("MarketTools", "要跳转的应用市场不存在!");
} catch (e: Exception ) {
Log.e("MarketTools", "其他错误:" + e.message);
}
}
/***
* 打开应用市场
* @param mContext
* @param mPackageName
* @param marketPackageName
*/
fun openMarket(mContext : Context , mPackageName : String , marketPackageName: String ) {
try {
val uri: Uri = Uri.parse(schemaUrl + mPackageName)
val mIntent = Intent(Intent.ACTION_VIEW, uri)
mIntent.setPackage(marketPackageName);
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(mIntent);
} catch (anf: ActivityNotFoundException) {
Log.e("MarketTools", "要跳转的应用市场不存在!");
} catch (e: Exception ) {
Log.e("MarketTools", "其他错误:" + e.message);
}
}
/***
* 检测是否存在应用市场
* @param mContext
* @param mPackageName
* @return
*/
fun isCheckMarket(mPackageName: String, mContext: Context) : Boolean{
return isInstalled(mPackageName, mContext)
}
/****
* 检查APP是否安装成功
* @param packageName
* @param context
* @return
*/
fun isInstalled(@NonNull mPackageName: String, mContext: Context): Boolean {
if (mPackageName.isEmpty()) {
return false
}
val packageInfo: PackageInfo? = try {
mContext.packageManager.getPackageInfo(mPackageName, 0)
} catch (e: PackageManager.NameNotFoundException) {
null
}
return packageInfo!= null
}
fun getBrandName(brandName: String): String {
when (brandName) {
HUAWEI_BRAND -> {
//华为
return HUAWEI_PACKAGE_NAME;
}
OPPO_BRAND -> {
//oppo
return OPPO_PACKAGE_NAME;
}
VIVO_BRAND -> {
//vivo
return VIVO_PACKAGE_NAME;
}
XIAOMI_BRAND -> {
//小米
return XIAOMI_PACKAGE_NAME;
}
LENOVO_BRAND -> {
//联想
return LIANXIANG_PACKAGE_NAME;
}
QH360_BRAND -> {
//360
return QH360_PACKAGE_NAME;
}
MEIZU_BRAND -> {
//魅族
return MEIZU_PACKAGE_NAME;
}
HONOR_BRAND -> {
//华为
return HUAWEI_PACKAGE_NAME;
}
XIAOLAJIAO_BRAND -> {
//小辣椒
return ZHUOYI_PACKAGE_NAME;
}
ZTE_BRAND -> {
//zte
return ZTE_PACKAGE_NAME;
}
NIUBIA_BRAND -> {
//努比亚
return NIUBIA_PACKAGE_NAME;
}
ONE_PLUS_BRAND -> {
//OnePlus
return OPPO_PACKAGE_NAME;
}
MEITU_BRAND -> {
//美图
return MEITU_PACKAGE_NAME;
}
SONY_BRAND -> {
//索尼
return GOOGLE_PACKAGE_NAME;
}
GOOGLE_BRAND -> {
//google
return GOOGLE_PACKAGE_NAME;
}
else -> return ""
}
}
/**
* 获取手机厂商
*/
private fun getDeviceBrand(): String {
return if (Build.BRAND == null) "" else Build.BRAND
}
}
版权声明:本文标题:Android跳转到应用商店的APP详情页面工具类(检测Google Play跳转网页详情) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727439282a1114793.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论