tencent cloud

智能媒资托管

产品简介
产品概述
功能介绍
产品优势
应用场景
基本概念
购买指南
快速入门
创建媒体库
发起请求
服务级 API 文档
History
Introduction
API Category
Making API Requests
PaaS Service APIs
Official Cloud Disk APIs
Data Types
Error Codes
业务级 API 文档
简介
访问令牌操作接口
租户空间操作接口
文件操作接口
目录或相簿操作接口
回收站操作接口
配额操作接口
查询任务操作接口
搜索操作接口
历史版本操作接口
目录和文件批量操作接口
收藏操作接口
Error Codes
SDK 文档
Android SDK
iOS SDK
鸿蒙 SDK
常见问题
企业网盘
产品简介
购买指南
快速入门
常见问题
Service Level Agreement
词汇表

快速入门

PDF
聚焦模式
字号
最后更新时间: 2026-01-07 11:03:07

准备工作

1. 您需要一个 Android 应用,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。
2. 请确保您的 Android 应用目标为 API 级别 21 (Android 5.0) 或更高版本。
3. 您需要一个可以获取智能媒资托管服务访问令牌的业务服务端接口,访问令牌的相关说明请参见 生成访问令牌

步骤1:安装 SDK

自动集成

使用 mavenCentral 仓库

在项目级别(通常是根目录下)的 build.gradle 中添加:
repositories {
google()
// 增加这行
mavenCentral()
}
在应用级别(通常是 app 模块下)的 build.gradle 中添加依赖:
dependencies {
...
// 增加这行
implementation 'com.qcloud.cos:smh-android:1.2.37'
}

关闭 beacon 上报功能

为了持续跟踪和优化 SDK 的质量,给您带来更好的使用体验,我们在 SDK 中引入了 腾讯灯塔 SDK。
说明
腾讯灯塔只对 SMH 侧的请求性能进行监控,不会上报业务侧数据。
若是想关闭该功能,请在应用级别(通常是 app 模块下)的 build.gradle 中修改 smh-android 的依赖为:
dependencies {
...
// 修改为
implementation 'com.qcloud.cos:smh-android-nobeacon:1.2.37'
}

步骤2:配置权限

网络权限

SDK 需要网络权限,用于与 SMH 服务器进行通信,请在应用模块下的 AndroidManifest.xml 中添加如下权限声明:
<uses-permission android:name="android.permission.INTERNET"/>

存储权限

如果您的应用场景中需要从外部存储中读写文件,请在应用模块下的 AndroidManifest.xml 中添加如下权限声明:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
注意
在 Android 6.0(API level 23)以上,您需要在运行时动态申请存储权限。

步骤3:开始使用

实现获取访问令牌

实现一个 SMHSimpleUser的子类,实现获取 libraryId 和 userSpace、请求访问令牌并返回结果的过程。
class MySMHSimpleUser: SMHSimpleUser() {
override val libraryId: String
get() = "smh3ptyc9mscifdi"
override val userSpace: UserSpace
get() = UserSpace(
userId = "7",
spaceId = "space1x8mfjgno6nyy"
)

override suspend fun provideAccessToken(): AccessToken {
// 首先从您的访问令牌服务器获取包含了访问令牌信息的响应

// 然后解析响应,获取访问令牌信息
String token = "token"; // 访问令牌 Token
long expiresIn = 86400;// 访问令牌的有效时长,单位为秒

//建议返回服务器时间作为签名的开始时间,避免由于用户手机本地时间偏差过大导致请求过期
// 返回服务器时间作为签名的起始时间
long startTime = 1556182000L; //访问令牌有效起始时间,单位是毫秒

// 最后返回访问令牌信息对象
return new AccessToken(token, startTime, expiresIn);
}
}
这里假设类名为 MySMHSimpleUser。初始化一个实例,来给 SDK 提供访问令牌。
val mySMHSimpleUser: MySMHSimpleUser = MySMHSimpleUser();

初始化 SMHCollection

使用您提供密钥的实例 mySMHSimpleUser,初始化一个 SMHCollection 的实例。
SMHCollection 提供了访问 SMH 的所有接口,后续文档中的 SMH 均指创建的 SMHCollection 实例。
注意:
控制台创建媒体库后,控制台会展示为您生成的专属域名,强烈建议您在创建 SMHCollection 实例时将 customHost 设置为您的专属域名。

// 初始化 SMHCollection,获取实例
val smh: SMHCollection = SMHCollection(
context = context,
user = mySMHSimpleUser,
// 将控制台创建媒体库后显示的“访问域名”赋值给 customHost
customHost = "<libraryId>.api.tencentsmh.cn"
)

步骤4:访问 SMH 服务

例如:列出文件列表
//目标文件夹
val targetDir = Directory()
try {
val directoryContents: DirectoryContents = smh.list(
//目标目录
dir = targetDir,
//页码
page = 1,
//每页拉取的数量
pageSize = 100,
//排序方式
orderType = OrderType.NAME,
//排序方向
orderDirection = OrderDirection.ASC,
//过滤类型
directoryFilter = DirectoryFilter.ONLY_FILE
)
//文件/目录列表 其他数量等内容请查看 DirectoryContents 实体内容
val contents = directoryContents.contents
} catch (e: Exception) {
e.printStackTrace()
}

通用参数介绍

LibraryId:媒体库 ID,必选参数。
SpaceId:空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数。
AccessToken:访问令牌,必选参数。
UserId:用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份,详情请参见 生成访问令牌,可选参数。
OrganizationId:组织 ID,必选参数。
UserToken:用户令牌,必选参数。
说明
更多概念请参见 基本概念

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈