Android根据渠道跳转应用商店

最近项目有个应用内部提示升级的需求,简单,核对版本号,版本号低了就给提示升级,但是还有个问题,点击升级跳转的问题,一般我们点击升级会跳到应用官网;我们的需求是点击升级的时候,根据当前app下载的渠道跳转到不同的渠道商店应用详情页或渠道的网页商店详情页,花了一些时间研究了下,也不是太难,这里权当记录了。

主要工作:

1、判断当前app的渠道号
2、获取当前手机包含的应用商店
3、如果存在对应的渠道商店,跳转到渠道商店;如果不存在对应的渠道商店,跳转到渠道商店的网页版

  • 判断当前app的渠道号
    int channelCode = BuildConfig.CHANNEL_CODE

  • 获取当前手机包含的应用商店
    /** * 获取当前手机上的应用商店数量
    * @param context
    * @return
    */
    private static ArrayList<String> queryInstalledMarketPkgs(Context
    context) {
    ArrayList<String> pkgs = new ArrayList<>();
    if (context == null)
    return pkgs;
    Intent intent = new Intent();
    intent.setAction("android.intent.action.MAIN");
    intent.addCategory("android.intent.category.APP_MARKET");
    PackageManager pm = context.getPackageManager();
    List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
    if (infos == null || infos.size() == 0)
    return pkgs;
    int size = infos.size();
    for (int i = 0; i < size; i++) {
    String pkgName = "";
    try {
    ActivityInfo activityInfo = infos.get(i).activityInfo;
    pkgName = activityInfo.packageName;
    } catch (Exception e) {
    e.printStackTrace();
    }
    if (!TextUtils.isEmpty(pkgName))
    pkgs.add(pkgName);
    }
    return pkgs;
    }

  • 应用商店跳转
    /** *
    * @param appPkg 应用包名
    * @param marketPkg 应用商店包名
    * @param context
    */
    private static void launchAppDetail(String appPkg, String marketPkg,
    Context context) {
    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);
    context.startActivity(intent);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

  • 应用商店网页版跳转
    Uri uri = Uri.parse("应用商店app网页版地址");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    context.startActivity(intent);

  • 根据渠道号和手机上包含的应用商店决定跳应用商店或者跳应用商店网页版

一切就绪!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • 5. 最佳实践 好了终于要点讲自己的东西了,有点小激动。下面这些仅表示个人观点,非一定之规,各位看官按需取用,有说...
    SnowDragonYY阅读 2,406评论 4 36
  • 1、拨打电话 public static void call(Context context, String ph...
    jxuanwu阅读 1,244评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,142评论 25 708