android APP 根据包名检查手机内是否有对应的APP

154 阅读1分钟

最近公司android 项目有这个根据APP 包名判断手机是否有这个APP 如果有跳转到APP 如果没有根据下载地址跳转浏览器下载此应用 如何检查手机是否有这个APP 呢 上代码

private fun isInstallQQWEICHAT(context: Context?, packageNames: String): Boolean {
//传入包名 ,会很坑的一点 包名不能有空格 如果后端录入数据的时候有空格 的话  检查会失败 所有这里用了 trim()
    return isAppInstalled(context, packageNames.trim())
}

private fun isAppInstalled(context: Context?, PackageName: String?): Boolean {
    try {
        val packageManager: PackageManager? = context?.packageManager
        val info = packageManager?.getPackageInfo(PackageName!!, 0)
        if (info != null) {
            return true
        }
    } catch (e: Exception) {
        /// loge(e);
    }
    return false
}

如果有这个app 返回true

 val intent = Intent()
// 一个参数是 APP 包名 ,第二个是跳转APP 起始的Activity 页面,PS:不能直接用startActivity 了 高版本android 的话
        val componentName = ComponentName(packageNames.trim(), startActivity.trim())
        intent.component = componentName
        ContextCompat.startActivity(this, intent, null)