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

如何在Jetpack Compose中判断应用是否存在,不存在则跳转Google Play商店?

在Jetpack Compose中实现检测并打开Google Authenticator的功能

核心实现步骤

1. 编写应用安装检测函数

在Compose中需依赖Android Context获取PackageManager,将检测函数调整为接收Context参数:

import android.content.Context
import android.content.pm.PackageManager

fun isAppInstalled(context: Context, packageName: String): Boolean {
    return try {
        // 尝试获取应用包信息,存在则返回true
        context.packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)
        true
    } catch (e: PackageManager.NameNotFoundException) {
        // 抛出异常说明应用未安装,返回false
        false
    }
}

2. 在Composable中实现启动/跳转逻辑

通过LocalContext.current获取当前Context,结合检测函数完成点击逻辑:

import android.content.Intent
import android.net.Uri
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext

@Composable
fun AuthenticatorLauncher() {
    val context = LocalContext.current
    // Google Authenticator的官方包名
    val authenticatorPackage = "com.google.android.apps.authenticator2"

    Column {
        Button(
            onClick = {
                if (isAppInstalled(context, authenticatorPackage)) {
                    // 获取应用启动Intent并打开
                    context.packageManager.getLaunchIntentForPackage(authenticatorPackage)?.let {
                        context.startActivity(it)
                    }
                } else {
                    // 跳转至Google Play商店的应用详情页
                    val playStoreIntent = Intent(
                        Intent.ACTION_VIEW,
                        Uri.parse("market://details?id=$authenticatorPackage")
                    )
                    context.startActivity(playStoreIntent)
                }
            }
        ) {
            Text(text = "打开Google Authenticator")
        }
    }
}

关键说明

  • LocalContext.current是Compose中获取Android Context的标准方式,替代传统View体系中的getActivity()
  • 使用getLaunchIntentForPackage可直接获取应用的启动Intent,无需手动配置Action和Category
  • 跳转商店使用market://协议,会优先打开Google Play应用;若未安装Play商店,可补充https://play.google.com/store/apps/details?id=作为备用链接

内容的提问来源于stack exchange,提问作者Aj Catindig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:39:17