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
}
}