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 | |
Unduh SDK |
Integrasikan SDK
Impor SDK menggunakan Gradle.
implementation 'com.aliyun.pds:android-sdk:0.1.4'Kode sumber: aliyun-pds-android-sdk.
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)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
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: 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?