Android实现根据包名跳转各大应用市场 |
您所在的位置:网站首页 › 小米手机应用市场下载安装 › Android实现根据包名跳转各大应用市场 |
目录 前言: 1.MartetUtils:各大应用市场工具类 2.使用实例代码,这里以跳转qq为例: 3.实现的效果截图如下: 4.总结:目前已经实现华为、小米、oppo、vivo、魅族、联想、应用宝等各大主流的应用市场跳转,Android还有很多市场没有尝试 5.完整代码地址: 前言:最近公司有个需求是根据包名跳转到手机的各大应用市场,于是研究了一下,记录下来,有需要的朋友可以试试. 1.MartetUtils:各大应用市场工具类 /** /* @anthor:njb /* @date: 2020-04-29 00:15 /* @desc: **/ public class MarketUtils { private static MarketUtils tools; private static final String schemaUrl = "market://details?id="; public static MarketUtils getTools() { if (null == tools) { tools = new MarketUtils(); } return tools; } /*** /* 不指定包名 /* @param mContext */ public void startMarket(Context mContext) { String packageName = mContext.getPackageName();//得到包名 startMarket(mContext, packageName); } /** /* 指定包名 /* /* @param mContext /* @param packageName */ public boolean startMarket(Context mContext, String packageName) { try { String deviceBrand = getDeviceBrand();//获得手机厂商 //根据厂商获取对应市场的包名 String brandName = deviceBrand.toUpperCase();//大写 if (TextUtils.isEmpty(brandName)) { Log.e("MarketUtils", "没有读取到手机厂商~~"); return false; } String marketPackageName = getBrandName(brandName); if (null == marketPackageName || "".equals(marketPackageName)) { //手机不再列表里面,去尝试寻找 //检测百度和应用宝是否在手机上安装,如果安装,则跳转到这两个市场的其中一个 boolean isExit1 = isCheckBaiduOrYYB(mContext, PACKAGE_NAME.BAIDU_PACKAGE_NAME); if (isExit1) { startMarket(mContext, packageName, PACKAGE_NAME.BAIDU_PACKAGE_NAME); return true; } boolean isExit2 = isCheckBaiduOrYYB(mContext, PACKAGE_NAME.TENCENT_PACKAGE_NAME); if (isExit2) { startMarket(mContext, packageName, PACKAGE_NAME.TENCENT_PACKAGE_NAME); return true; } } startMarket(mContext, packageName, marketPackageName); return true; } catch (ActivityNotFoundException anf) { Log.e("MarketUtils", "要跳转的应用市场不存在!"); } catch (Exception e) { Log.e("MarketUtils", "其他错误:" + e.getMessage()); } return false; } /*** /* 指定包名,指定市场 /* @param mContext /* @param packageName /* @param marketPackageName */ public void startMarket(Context mContext, String packageName, String marketPackageName) { try { openMarket(mContext, packageName, marketPackageName); } catch (ActivityNotFoundException anf) { Log.e("MarketUtils", "要跳转的应用市场不存在!"); } catch (Exception e) { Log.e("MarketUtils", "其他错误:" + e.getMessage()); } } /*** /* 打开应用市场 /* @param mContext /* @param packageName /* @param marketPackageName */ private void openMarket(Context mContext, String packageName, String marketPackageName) { try { Uri uri = Uri.parse(schemaUrl + packageName); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setPackage(marketPackageName); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } catch (ActivityNotFoundException anf) { Log.e("MarketUtils", "要跳转的应用市场不存在!"); } catch (Exception e) { Log.e("MarketUtils", "其他错误:" + e.getMessage()); } } /*** /* 检测是否是应用宝或者是百度市场 /* @param mContext /* @param packageName /* @return */ private boolean isCheckBaiduOrYYB(Context mContext, String packageName) { boolean installed = isInstalled(packageName, mContext); return installed; } /**** /* 检查APP是否安装成功 /* @param packageName /* @param context /* @return */ private boolean isInstalled(@NonNull String packageName, Context context) { if ("".equals(packageName) || packageName.length() |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |