Android UIKit

最近更新时间:2026-05-06 17:29:22

我的收藏

准备工作

1. 您需要一个 Android 应用,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。
2. 请确保您的 Android 应用目标为 API 级别 21 (Android 5.0) 或更高版本。

操作步骤

步骤1:添加仓库和依赖

1. 从 cnb 根目录下 android 目录下载 本地 Maven repo 仓库目录,放到项目中(例如 libs/repo):
your-project/
├── app/
├── libs/
│ └── repo/ ← 将下载的 repo 目录放到这里
├── build.gradle.kts
└── settings.gradle.kts
2. settings.gradle.kts 中添加仓库:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
// SMH UIKit 本地 Maven 仓库
maven { url = uri("${rootProject.projectDir}/libs/repo") }
// 运行时依赖仓库(必须)
maven { url = uri("https://mirrors.tencent.com/nexus/repository/maven-tencent/") }
}
}
3. 在 App 模块的 build.gradle.kts 中添加:
说明:
<version> 请根据具体的版本号进行替换。
dependencies {
implementation("com.qcloud.cos:smh-ui-kit:<version>")
}

步骤2:打开文件管理页面

参考如下代码即可打开文件管理页面。
import com.tencent.qcloud.smh.uikit.internal.SmhUiKit
import com.tencent.qcloud.smh.uikit.smh.AccessToken
import com.tencent.qcloud.smh.uikit.smh.SmhAccessTokenProvider
import com.tencent.qcloud.smh.uikit.smh.SmhConfig

// 1. 配置
val smhConfig = SmhConfig(
host = "https://xxx.api.tencentsmh.cn",
libraryId = "your-library-id",
spaceId = "your-space-id",
downloadPath = getExternalFilesDir("SMHDownload")?.absolutePath ?: filesDir.absolutePath + "/SMHDownload",
identifier = "identifier"
)

// 2. 实现 Token 提供者
val tokenProvider = object : SmhAccessTokenProvider {
override suspend fun getAccessToken(): AccessToken {
// 从您的服务端获取 Token(在后台线程调用,可进行网络请求)
val result = YourApi.getSmhToken()
return AccessToken(
token = result.token,
startTime = System.currentTimeMillis(),
expiresIn = result.expiresIn // 有效时长(秒)
)
}
}

// 3. 创建 Fragment 并添加到 Activity
val fragment = SmhUiKit.newFragment(smhConfig, tokenProvider)
supportFragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.addToBackStack(null)
.commit()

SmhConfig 参数

参数
说明
类型
是否必填
host
SMH API 地址,如 https://xxx.api.tencentsmh.cn
String
libraryId
媒体库 ID
String
spaceId
空间 ID
String
downloadPath
默认下载根路径
String
identifier
业务层标识,一般用于不同业务的 SDK 层数据隔离
String
path
初始 space 目录路径,默认根目录
String
userId
用户 ID(SMH 服务端概念)
String

AccessToken 参数

参数
说明
类型
是否必填
token
访问凭证
String
startTime
Token 起始时间(毫秒时间戳)
Long
expiresIn
有效时长(秒)
Int
说明:
startTimeexpiresIn 用于描述 Token 有效期。SDK 内部会优先复用未过期 Token,接入方无需额外管理 Token 生命周期。

权限说明

SDK 已内置声明网络和存储权限,会自动合并到您的应用中。如果 targetSdk >= 33,建议额外声明:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />