准备工作
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.SmhUiKitimport com.tencent.qcloud.smh.uikit.smh.AccessTokenimport com.tencent.qcloud.smh.uikit.smh.SmhAccessTokenProviderimport 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 并添加到 Activityval 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 | 是 |
说明:
startTime 和 expiresIn 用于描述 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" />