XuqmGroup-AndroidSDK/sdk-file
2026-07-27 11:44:24 +08:00
..
src fix(file): isolate sdk file provider from hosts 2026-07-27 11:44:24 +08:00
build.gradle.kts refactor(sdk): unify configuration and extension lifecycle 2026-07-27 09:46:13 +08:00
consumer-rules.pro refactor(sdk): unify configuration and extension lifecycle 2026-07-27 09:46:13 +08:00
README.md fix(file): isolate sdk file provider from hosts 2026-07-27 11:44:24 +08:00

sdk-file

XuqmGroup Android SDK 的平台文件扩展。它是依赖 sdk-core 的可选模块,统一承载:

  • 使用 XuqmSDK 当前登录态和租户平台文件服务上传文件;
  • 通过模块唯一声明的 FileProvider 安全打开本地文件。

纯下载、SHA-256、MediaStore 保存等无需初始化的能力仍由 com.xuqm.sdk.file.FileSDK 提供,sdk-core 不包含上传转发 API 或 FileProvider。

集成

dependencies {
    implementation("com.xuqm:sdk-file:VERSION")
}

宿主同时应用 com.xuqm.common 构建插件,并将租户平台签发的 config.xuqmconfig 放在 app/src/main/assets/config/config.xuqmconfig。模块的 XuqmMergedProvider 只有检测到构建插件生成的标记后才会自动初始化 SDK。

上传

val fromUri = PlatformFileSDK.upload(
    context = context,
    uri = uri,
    onProgress = { progress -> /* 0..100 */ },
)

val fromFile = PlatformFileSDK.upload(
    file = file,
    onProgress = { progress -> /* 0..100 */ },
)

val fromBytes = PlatformFileSDK.uploadBytes(
    fileName = "photo.jpg",
    mimeType = "image/jpeg",
    bytes = bytes,
)

UriFile 使用流式请求体,不会把完整文件读入内存。返回 FileUploadResult,字段包括 urlthumbnailUrlhashsizeoriginalNamemimeTypeext

三个上传入口都会先等待签名配置和平台服务配置初始化完成,宿主无需自行增加等待 逻辑。平台返回失败、状态不一致或成功响应缺少 data 时抛出 PlatformFileException;其 codestatusmessage 保留服务端结构化错误, 但不会暴露原始响应体。

打开文件

PlatformFileSDK.openFile(context, file)

打开本地文件不依赖平台初始化或登录。

模块通过独立的 XuqmFileProvider 声明 ${applicationId}.xuqm.fileprovider。 它不会与宿主或其他 SDK 自己的 FileProvider 合并冲突,宿主无需添加 tools:replace。其他模块不得重复声明同一 Xuqm authority。