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

Android平台用Kotlin将应用内图片URI直接打开至Adobe Lightroom

Kotlin实现将图片URI直接打开到Adobe Lightroom应用

核心实现逻辑

  • 构建指定目标应用的Intent,直接跳转至Lightroom而非弹出应用选择器
  • 处理URI权限与版本兼容问题,确保Lightroom能读取图片
  • 兼容Lightroom未安装的场景

完整代码示例

import android.content.Intent
import android.net.Uri
import android.os.Build
import android.content.Context

fun Context.openImageInLightroom(imageUri: Uri) {
    val lightroomPackage = "com.adobe.lrmobile"
    
    // 构建打开图片的Intent
    val viewIntent = Intent(Intent.ACTION_VIEW).apply {
        setDataAndType(imageUri, "image/*")
        // 指定仅由Lightroom处理该Intent
        setPackage(lightroomPackage)
        // 授予临时读取权限(Android 7.0+必需)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        }
        addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    }

    val packageManager = packageManager
    // 检查Lightroom是否已安装
    if (packageManager.resolveActivity(viewIntent, 0) != null) {
        startActivity(viewIntent)
    } else {
        // 引导用户前往应用商店下载Lightroom
        val marketIntent = Intent(Intent.ACTION_VIEW).apply {
            data = Uri.parse("market://details?id=$lightroomPackage")
            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        }
        if (packageManager.resolveActivity(marketIntent, 0) != null) {
            startActivity(marketIntent)
        } else {
            // 无应用商店时的提示逻辑(如Toast)
            // Toast.makeText(this, "无法找到Adobe Lightroom应用", Toast.LENGTH_SHORT).show()
        }
    }
}

关键注意事项

  • URI格式要求:必须使用content://类型的URI(通过FileProvider生成),file://格式在Android 7.0+会触发安全异常。
  • 权限授予:FLAG_GRANT_READ_URI_PERMISSION必须添加,否则Lightroom无法访问你的应用内图片资源。
  • 包名验证:部分地区或特殊版本的Lightroom包名可能为com.adobe.lrmobile.cc,测试时需根据实际情况调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:25:50