Android应用内跳转到google play或者其他应用市场详情页下载或者评价

1. google play应用商店

由于国内网络环境,暂未能做到验证

  // 做跳转到谷歌play做好评的业务逻辑
            //这里开始执行一个应用市场跳转逻辑,默认this为Context上下文对象
            var intent: Intent = Intent(Intent.ACTION_VIEW)
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            Log.d("HOmeFragment", "intent = $intent")
            intent.data = Uri.parse("market://details?id=" + "com.blossom.ripple") //跳转到应用市场,非Google Play市场一般情况也实现了这个接口
            //存在手机里没安装应用市场的情况,跳转会包异常,做一个接收判断
            if (intent.resolveActivity(requireActivity().packageManager) != null) { //可以接收
                startActivity(intent)
            } else { //没有应用市场,我们通过浏览器跳转到Google Play
                intent.data = Uri.parse("https://play.google.com/store/apps/details?id=" + "com.blossom.ripple");
                //这里存在一个极端情况就是有些用户浏览器也没有,再判断一次
                if (intent.resolveActivity(requireActivity().packageManager) == null) { //有浏览器
                    startActivity(intent)
                } else { //天哪,这还是智能手机吗?
                    Toast.makeText(
                        activity,
                        "You don't have an app market installed, not even a browser!",
                        Toast.LENGTH_SHORT
                    ).show()
                }
            }

2. 以三星为例的非google play应用商店

以下代码已验证可行。其他品牌机型应该找到相应的应用商店,点击到应用详情页进行分享查看链接,即可找到相应的所需域名,进行替换即可。

  • 验证环境
  • 三星SM-A5160机型
  • Android 10系统
    在三星SM-A5160机型,Android 10系统上进行了验证

    /**
     * 跳转三星应用商店
     * @param context [Context]
     * @param packageName 包名
     * @return `true` 跳转成功 <br></br> `false` 跳转失败
     */
    fun goToSamsungMarket(context: Context, packageName: String): Boolean {
        Log.d("HOmeFragment", "packageName = $packageName")
//        val uri = Uri.parse("samsungapps://ProductDetail/$packageName")
        val uri = Uri.parse("http://apps.samsung.com/appquery/appDetail.as?appId=$packageName")
//                Uri uri = Uri.parse("http://apps.samsung.com/appquery/appDetail.as?appId=" + packageName);
        val intent = Intent(Intent.ACTION_VIEW, uri)
        intent.setPackage("com.sec.android.app.samsungapps")
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        return try {
            Log.d("HOmeFragment", "startActivity")
            context.startActivity(intent)
            true
        } catch (e: ActivityNotFoundException) {
            e.printStackTrace()
            Log.d("HOmeFragment", "ActivityNotFoundException, e = ${e.toString()}")
            false
        }
    }

参考文章

上一篇:andorid jar/库源码解析之HotXposed


下一篇:logback日志级别动态切换的四种方案