You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测应用是否已安装,已安装则打开,未安装则跳转至Play Store

实现方案(Android平台)

1. 提前配置包可见性声明

从Android 11(API 30)开始,应用查询其他应用安装状态需要在AndroidManifest.xml中声明包查询权限,添加如下代码:

<queries>
    <package android:name="com.google.android.apps.fitness" />
</queries>

注:com.google.android.apps.fitness是Google Fit的官方固定包名

2. 核心逻辑实现

检测应用是否安装的工具方法

Kotlin版本:

fun isAppInstalled(context: Context, packageName: String): Boolean {
    return try {
        context.packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)
        true
    } catch (e: PackageManager.NameNotFoundException) {
        false
    }
}

Java版本:

private boolean isAppInstalled(Context context, String packageName) {
    try {
        context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

按钮点击事件逻辑

Kotlin版本:

yourButton.setOnClickListener {
    val fitPackage = "com.google.android.apps.fitness"
    if (isAppInstalled(this, fitPackage)) {
        // 已安装直接打开Google Fit
        val launchIntent = packageManager.getLaunchIntentForPackage(fitPackage)
        startActivity(launchIntent)
    } else {
        // 未安装跳转Play Store下载页
        try {
            startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$fitPackage")))
        } catch (e: ActivityNotFoundException) {
            // 设备无Play Store时的兜底处理,可自定义逻辑
            Toast.makeText(this, "未找到应用商店,请手动安装Google Fit", Toast.LENGTH_SHORT).show()
        }
    }
}

Java写法逻辑与上述完全一致,仅语法存在差异。

注意事项

  • 所有跳转逻辑已添加异常捕获,避免系统拦截跳转、无应用商店等场景下的崩溃问题
  • 适配Android 12及以上版本无需额外添加跳转相关特殊权限,上述配置即可正常运行

内容的提问来源于stack exchange,提问作者Daniel Döbereiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:15:03