All Products
Search
Document Center

Drive and Photo Service:Ikhtisar SDK Android

Last Updated:Jan 17, 2026

Panduan integrasi

Nama SDK

Drive and Photo Service SDK for Android

Pengembang

Alibaba Cloud Computing Co., Ltd.

Versi SDK

0.1.4

Nama paket SDK

com.aliyun.pds.sdk

Waktu pembaruan SDK

2023-07-19

Ukuran SDK

159,76 KB

Hash MD5 SDK

47643c218b682f5c59ac2f17bb9044b4

Kebijakan privasi

Kebijakan Privasi Drive and Photo Service SDK

Unduh SDK

aliyun-pds-sdk-0.1.4.aar

Integrasikan SDK

Impor SDK menggunakan Gradle.

implementation 'com.aliyun.pds:android-sdk:0.1.4'

Kode sumber: aliyun-pds-android-sdk.

Penting

Versi minimum Android SDK yang didukung adalah API 21.

Inisialisasi

Sebelum menggunakan kit pengembangan perangkat lunak (SDK), pastikan Anda telah mengaktifkan Drive and Photo Service dan membuat instans di Konsol. Untuk informasi selengkapnya, lihat Memulai PDS.

// Dapatkan token akses dari sistem akun Anda. Backend Anda menggunakan AppKey dan AppSecret dari platform PDS untuk meminta token dan mengembalikannya ke client.
val token = SDToken("your access token") 
// Dapatkan host API Anda dari Konsol PDS.
val apiHost = "your API host"            
val config = SDConfig.Builder(token, apiHost, 3600)
    // Menentukan apakah transfer file instan diaktifkan. Default: true. (Opsional)
    .canFastUpload() 
    // User-Agent untuk permintaan. (Opsional)
    .userAgent() 
    // Jumlah maksimum percobaan ulang. Default: 3. (Opsional)
    .maxRetryCount()
    // Menentukan apakah mode debug diaktifkan. Default: false. (Opsional)
    .isDebug()
    // Ukuran shard unduhan. Default: 10 MB. Jangan atur nilai ini terlalu kecil atau terlalu besar. (Opsional)
    .downloadBlockSize() 
    // Ukuran shard unggahan. Default: 4 MB. Jangan atur nilai ini terlalu kecil atau terlalu besar. (Opsional)
    .uploadBlockSize() 
    // Periode timeout untuk menetapkan koneksi jaringan. Default: 15s. (Opsional)
    .connectTimeout()
    // Periode timeout untuk respons koneksi jaringan. Default: 60s. (Opsional)
    .readTimeout()
    // Periode timeout untuk respons transmisi jaringan. Default: 60s. (Opsional)
    .writeTimeout()         
    .build()
SDClient.instance.init(this, config)
Catatan

Perhatikan bahwa SDK tidak secara otomatis merefresh token akses. Anda harus secara berkala mengambil token terbaru dari server Anda dan meneruskannya ke SDK. Gunakan kode berikut untuk memperbarui token:

SDClient.instance.updateToken(token)

Unggah dan unduh file

Catatan

Callback progres dan status Tugas berjalan di subthread. Untuk memperbarui UI, alihkan ke thread utama.

Tugas unduhan

// Inisialisasi informasi unduhan.
val downloadInfo = DownloadRequestInfo.Builder()
    .downloadUrl(url)
    .driveId(driveId)
    .fileId(fileId)
    .fileName(fileName)
    .fileSize(fileSize)
    // Path untuk menyimpan file.
    .filePath(dir.path)
    // Dari share: ID. Parameter ini opsional jika file bukan berasal dari share.
    .shareId(shareId)
    // Dari share: token. Parameter ini opsional jika file bukan berasal dari share.
    .shareToken(shareToken) 
    // Dari share: password. Parameter ini opsional jika file bukan berasal dari share.
    .sharePwd(sharePwd)
    // Untuk versi historis: ID. Parameter ini wajib saat mengunduh versi historis file. Opsional jika tidak.
    .revisionId(revisionId)
    // Nilai hash untuk verifikasi.
    .contentHash(hash)
    // Algoritma verifikasi hash. Saat ini hanya crc64 yang didukung.
    .contentHashName("crc64")       
    .build()

/* 
* Buat dan mulai task.
* Jika Anda menentukan taskId dari task yang belum selesai, unduhan dilanjutkan dari titik terakhir.
* Jangan tentukan taskId dari task yang sudah selesai. Hal ini akan langsung memicu callback penyelesaian.
* Gunakan taskId unik untuk setiap task baru. Gunakan kembali taskId hanya untuk melanjutkan task.
*/
val task = SDClient.instance.startDownloadTask(
    taskId,                 
    downloadInfo,
    // Pendengar untuk penyelesaian unduhan. Callback ini dipicu saat sukses atau gagal. Pesan kesalahan dikembalikan saat gagal.
    completeListener,
    // Pendengar untuk progres unduhan.
    progressListener        	
)

/*
* Secara default, startDownloadTask memulai task.
* Jika task dihentikan, panggil metode ini untuk memulai ulang dan melanjutkannya.
*/
task.start()

/* 
* Hentikan task. Jika parameter clean bernilai false, file sementara tidak dihapus, dan pemanggilan start() melanjutkan task.
* Jika parameter clean bernilai true, file sementara dan data dihapus, dan pemanggilan start() memulai ulang task dari awal.
*/
task.stop(clean)

Tugas unggahan

// Inisialisasi informasi unggahan.
val uploadInfo = UploadRequestInfo.Builder()
    .fileName("edmDrive")
    .filePath(file.absolutePath)
    .fileSize(file.length())
    .parentId(parentId)
    .driveId(driveId)
    .mimeType(mimeType)
    // Tentukan ID file. Parameter ini wajib untuk menimpa file.
    .fileId(fileId)
    /* 
    * Cara menangani file dengan nama duplikat. Default: "auto_rename". Penjelasan parameter:
    *  auto_rename: Jika file dengan nama yang sama ada, layanan cloud secara otomatis mengganti namanya. Secara default, timestamp saat ini ditambahkan, misalnya xxx_20060102_150405.
    *  ignore: Mengizinkan file dengan nama yang sama.
    *  refuse: Jika file dengan nama yang sama ada, layanan menolak file baru dan mengembalikan pesan sukses.
    */
    .checkNameMode(checkNameMode)       
    // Untuk share. Parameter ini opsional jika tidak terkait dengan share.                                
    .shareId(shareId)                   
    .shareToken(shareToken)             
    .sharePwd(sharePwd)                 
    .build()

// Buat dan mulai task.
val task = SDClient.instance.startUploadTask(
    taskId,                 
    uploadInfo,
    // Pendengar untuk penyelesaian unggahan. Callback ini dipicu saat sukses atau gagal. Pesan kesalahan dikembalikan saat gagal.
    completeListener,
    // Pendengar untuk progres unggahan.
    progressListener        
)

/* 
* Secara default, startUploadTask memulai task.
* Jika task dihentikan, panggil metode ini untuk memulai ulang dan melanjutkannya.
*/
task.start()

/*
* Hentikan task. Jika parameter clean bernilai false, file sementara tidak dihapus, dan pemanggilan start() melanjutkan task.
* Jika parameter clean bernilai true, file sementara dan data dihapus, dan pemanggilan start() memulai ulang task dari awal.
*/
task.stop(clean)

Callback progres tugas

// currentSize adalah progres saat ini. Perhatikan bahwa callback tidak berada di thread utama.
interface OnProgressListener {
    fun onProgressChange(currentSize : Long)
}

Callback penyelesaian task

interface OnCompleteListener {
    fun onComplete(taskId: String, fileMeta : SDFileMeta, errorInfo: SDErrorInfo?)
}

Parameter fileMeta berisi informasi file.

class SDFileMeta(
    // ID file.
    val fileId: String?,
    // Nama file.
    val fileName: String?,
    // Path file. Untuk task unggahan, ini adalah path file yang diunggah. Untuk task unduhan, ini adalah path tempat file disimpan.
    val filePath: String?,
    // uploadId untuk task unggahan. Anda dapat mengabaikan ini jika tidak relevan dengan bisnis Anda.
    val uploadId: String? = "" 
)

class SDErrorInfo(
    // Kode kesalahan.
    val code: SDTransferError,
    // Deskripsi kesalahan.
    val message: String,
    // Exception, digunakan untuk melihat stack dan menangani kesalahan.
    val exception: Exception?,
    // Jika terjadi kesalahan permintaan backend, nilai ini dikembalikan untuk membantu troubleshooting.
    var requestId: String? = "" 
)

Kode kesalahan

SDTransferError.Unknown // Kesalahan tidak dikenal.
SDTransferError.Network // Kesalahan jaringan.
SDTransferError.Server // Kesalahan server.
SDTransferError.FileNotExist // Saat unggah, file lokal tidak ditemukan.
SDTransferError.SpaceNotEnough // Saat unduh, storage space lokal tidak mencukupi.
SDTransferError.TmpFileNotExist // Saat unduh, file sementara lokal tidak ada.
SDTransferError.PathRuleError // Saat unduh, aturan path penyimpanan tidak valid.

Setelah Tugas dibuat, Tugas tersebut otomatis dimulai. Anda dapat mengambil progres Tugas saat ini dari callback progres. Listener penyelesaian dipanggil ketika Tugas berhasil atau gagal.

Operasi API file

Untuk informasi selengkapnya tentang parameter permintaan dan respons, lihat referensi API Manajemen File.

Ambil objek fileApi dari SDClient.fileApi, lalu panggil metode berikut untuk mengakses API yang sesuai.

Catatan

Catatan: Parameter dalam contoh permintaan merupakan parameter dasar. Untuk parameter lainnya, lihat referensi API resmi.

Daftar file atau folder

fun fileList(fileListRequest: FileListRequest): FileListResp?

// Untuk parameter FileListRequest lainnya, lihat implementasi FileListRequest.
val request = FileListRequest()
// fileId folder yang akan didaftar. Gunakan "root" untuk direktori root.
request.parentId = "root"
// driveId yang berisi daftar tersebut.
request.driveId = ""                    

Buat file atau folder

// Contoh FileCreateRequest.
val createRequest = FileCreateRequest()
// enum (ignore, auto_rename, refuse)
createRequest.checkNameMode = "auto_rename"
// driveId tempat file akan dibuat.
createRequest.driveId = "" 
// Nama file baru.
createRequest.name = ""
// fileId direktori induk. Gunakan "root" untuk direktori root.
createRequest.parentFileId = "root"
// enum (file, folder)
createRequest.type = "folder"                   

Dapatkan file atau folder

// Dapatkan informasi file atau folder.
fun fileGet(getResp: FileGetRequest): FileGetResp?

// Contoh FileGetRequest.
val getRequest = FileGetRequest()
// driveId file tersebut.
getRequest.driveId = "" 
// fileId.
getRequest.fileId = ""                      

Salin file atau folder

// Salin file atau folder.
fun fileCopy(fileCopyRequest: FileCopyRequest): FileCopyResp?

// Contoh FileCopyRequest.
val copyRequest = FileCopyRequest()
// driveId file tersebut.
copyRequest.driveId = ""  
// fileId.
copyRequest.fileId = ""
// driveId folder tujuan.
copyRequest.toDriveId = ""
// Nama baru untuk file yang disalin.
copyRequest.newName = ""
// fileId folder induk tujuan. Gunakan "root" untuk direktori root.
copyRequest.toParentId = "root"         

Pindahkan file atau folder

// Pindahkan file atau folder.
fun fileMove(fileMoveRequest: FileMoveRequest): FileMoveResp?

// Contoh FileMoveRequest.
val moveRequest = FileMoveRequest() 
// driveId file tersebut.
moveRequest.driveId = "" 
// fileId.
moveRequest.fileId = ""
// driveId folder tujuan.
moveRequest.toDriveId = ""
// Nama baru untuk file yang dipindahkan.
moveRequest.newName = "" 
// fileId direktori induk tujuan. Gunakan "root" untuk direktori root.
moveRequest.toParentId = "root"             

Perbarui file atau folder

fun fileUpdate(updateRequest: FileUpdateRequest): FileGetResp?

// Contoh FileUpdateRequest.
val updateRequest = FileUpdateRequest()
// driveId file tersebut.
updateRequest.driveId = item.driveId!!
// fileId.
updateRequest.fileId = item.fileId 
// Nama baru untuk file yang diperbarui.
updateRequest.name = ""                     

Hapus file atau folder

fun fileDelete(deleteRequest: FileDeleteRequest): FileDeleteResp?

// Contoh FileDeleteRequest.
val delRequest = FileDeleteRequest()
// driveId file tersebut.
delRequest.driveId = ""
// fileId file atau folder yang akan dihapus.
delRequest.fileId = ""                      

Cari file

fun fileSearch(fileSearchRequest: FileSearchRequest): FileListResp?

// Contoh FileSearchRequest.  
// Untuk aturan kueri, lihat https://www.alibabacloud.com/help/document_detail/175890.html
val request = FileSearchRequest()
// keyStr: Kata kunci pencarian.
request.query = "name match '$keyStr' and status = 'available'"     
request.driveId = ""  

Operasi lainnya

// Dapatkan URL unggah untuk shard file.
fun fileGetUploadUrl(getUploadUrlRequest: FileGetUploadUrlRequest): FileGetUploadUrlResp?

// Selesaikan unggahan file.
fun fileComplete(completeRequest: FileCompleteRequest): FileGetResp?

// Dapatkan URL unduh file.
fun fileGetDownloadUrl(getDownloadUrlRequest: FileGetDownloadUrlRequest): FileGetDownloadUrlResp?

// Dapatkan status tugas asinkron. Misalnya, menghapus folder dengan banyak file merupakan tugas asinkron. Anda dapat menggunakan antarmuka ini untuk mendapatkan status task.
fun getAsyncTask(getAsyncTaskRequest: AsyncTaskRequest): AsyncTaskResp?