すべてのプロダクト
Search
ドキュメントセンター

Drive and Photo Service:Android SDK の概要

最終更新日:Dec 24, 2025

統合ガイド

SDK 名

Drive and Photo Service SDK for Android

開発者

Alibaba Cloud Computing Co., Ltd.

SDK バージョン

0.1.4

SDK パッケージ名

com.aliyun.pds.sdk

SDK 更新日時

2023-07-19

SDK サイズ

159.76 KB

SDK MD5 ハッシュ

47643c218b682f5c59ac2f17bb9044b4

プライバシーポリシー

Drive and Photo Service SDK プライバシーポリシー

SDK ダウンロード

aliyun-pds-sdk-0.1.4.aar

SDK の統合

Gradle を使用して SDK をインポートします。

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

ソースコード: aliyun-pds-android-sdk

重要

サポートされる最小 Android SDK バージョンは API 21 です。

初期化

ソフトウェア開発キット (SDK) を使用する前に、Drive and Photo Service を有効化し、コンソールでインスタンスを作成していることを確認してください。詳細については、「PDS の使用開始」をご参照ください。

// アカウントシステムからアクセストークンを取得します。 バックエンドは PDS プラットフォームの AppKey と AppSecret を使用してトークンをリクエストし、クライアントに返します。
val token = SDToken("your access token") 
// PDS コンソールから API ホストを取得します。
val apiHost = "your API host"            
val config = SDConfig.Builder(token, apiHost, 3600)
    // 高速ファイル転送を有効にするかどうかを指定します。 デフォルト: true。(オプション)
    .canFastUpload() 
    // リクエストの User-Agent。(オプション)
    .userAgent() 
    // 最大リトライ回数。 デフォルト: 3。(オプション)
    .maxRetryCount()
    // デバッグモードを有効にするかどうかを指定します。 デフォルト: false。(オプション)
    .isDebug()
    // ダウンロードシャードのサイズ。 デフォルト: 10 MB。この値を小さすぎたり、大きすぎたりしないように設定してください。(オプション)
    .downloadBlockSize() 
    // アップロードシャードのサイズ。 デフォルト: 4 MB。この値を小さすぎたり、大きすぎたりしないように設定してください。(オプション)
    .uploadBlockSize() 
    // ネットワーク接続を確立するためのタイムアウト期間。 デフォルト: 15 秒。(オプション)
    .connectTimeout()
    // ネットワーク接続応答のタイムアウト期間。 デフォルト: 60 秒。(オプション)
    .readTimeout()
    // ネットワーク送信応答のタイムアウト期間。 デフォルト: 60 秒。(オプション)
    .writeTimeout()         
    .build()
SDClient.instance.init(this, config)
説明

SDK はアクセストークンを自動的に更新しないことに注意してください。定期的にサーバーから最新のトークンを取得し、SDK に渡す必要があります。次のコードを使用してトークンを更新します。

SDClient.instance.updateToken(token)

ファイルのアップロードとダウンロード

説明

タスクの進捗状況とステータスのコールバックはサブスレッドで実行されることに注意してください。UI を更新するには、メインスレッドに切り替える必要があります。

ダウンロードタスク

// ダウンロード情報を初期化します。
val downloadInfo = DownloadRequestInfo.Builder()
    .downloadUrl(url)
    .driveId(driveId)
    .fileId(fileId)
    .fileName(fileName)
    .fileSize(fileSize)
    // ファイルを保存するパス。
    .filePath(dir.path)
    // 共有から: ID。ファイルが共有からのものでない場合、このパラメーターはオプションです。
    .shareId(shareId)
    // 共有から: トークン。ファイルが共有からのものでない場合、このパラメーターはオプションです。
    .shareToken(shareToken) 
    // 共有から: パスワード。ファイルが共有からのものでない場合、このパラメーターはオプションです。
    .sharePwd(sharePwd)
    // 履歴バージョンの場合: ID。ファイルの履歴バージョンをダウンロードする場合、このパラメーターは必須です。それ以外の場合はオプションです。
    .revisionId(revisionId)
    // 検証用のハッシュ値。
    .contentHash(hash)
    // ハッシュ検証アルゴリズム。 現在、crc64 のみがサポートされています。
    .contentHashName("crc64")       
    .build()

/* 
* タスクを作成して開始します。
* 未完了タスクの taskId を指定すると、ダウンロードは中断された箇所から再開されます。
* 完了したタスクの taskId は指定しないでください。指定すると、完了コールバックがすぐにトリガーされます。
* 新しいタスクごとに一意の taskId を使用してください。 taskId の再利用は、タスクを再開する場合にのみ行います。
*/
val task = SDClient.instance.startDownloadTask(
    taskId,                 
    downloadInfo,
    // ダウンロード完了のリスナー。 このコールバックは、成功または失敗時にトリガーされます。 失敗時にはエラーメッセージが返されます。
    completeListener,
    // ダウンロード進捗のリスナー。
    progressListener        	
)

/*
* デフォルトでは、startDownloadTask はタスクを開始します。
* タスクが停止した場合、このメソッドを呼び出して再起動し、続行します。
*/
task.start()

/* 
* タスクを停止します。 clean パラメーターが false の場合、一時ファイルは削除されず、start() を呼び出すとタスクが再開されます。
* clean パラメーターが true の場合、一時ファイルとデータが削除され、start() を呼び出すとタスクが最初から再開されます。
*/
task.stop(clean)

アップロードタスク

// アップロード情報を初期化します。
val uploadInfo = UploadRequestInfo.Builder()
    .fileName("edmDrive")
    .filePath(file.absolutePath)
    .fileSize(file.length())
    .parentId(parentId)
    .driveId(driveId)
    .mimeType(mimeType)
    // ファイル ID を指定します。 ファイルを上書きするには、このパラメーターが必要です。
    .fileId(fileId)
    /* 
    * 名前が重複するファイルの処理方法。 デフォルト: "auto_rename"。 パラメーターは次のとおりです:
    *  auto_rename: 同じ名前のファイルが存在する場合、クラウドサービスは自動的に名前を変更します。 デフォルトでは、xxx_20060102_150405 のように現在のタイムスタンプが追加されます。
    *  ignore: 同じ名前のファイルを許可します。
    *  refuse: 同じ名前のファイルが存在する場合、サービスは新しいファイルを拒否し、成功メッセージを返します。
    */
    .checkNameMode(checkNameMode)       
    // 共有の場合。 これらのパラメーターは、共有に関連しない場合はオプションです。                                
    .shareId(shareId)                   
    .shareToken(shareToken)             
    .sharePwd(sharePwd)                 
    .build()

// タスクを作成して開始します。
val task = SDClient.instance.startUploadTask(
    taskId,                 
    uploadInfo,
    // アップロード完了のリスナー。 このコールバックは、成功または失敗時にトリガーされます。 失敗時にはエラーメッセージが返されます。
    completeListener,
    // アップロード進捗のリスナー。
    progressListener        
)

/* 
* デフォルトでは、startUploadTask はタスクを開始します。
* タスクが停止した場合、このメソッドを呼び出して再起動し、続行します。
*/
task.start()

/*
* タスクを停止します。 clean パラメーターが false の場合、一時ファイルは削除されず、start() を呼び出すとタスクが再開されます。
* clean パラメーターが true の場合、一時ファイルとデータが削除され、start() を呼び出すとタスクが最初から再開されます。
*/
task.stop(clean)

タスク進捗コールバック

// currentSize は現在の進捗です。 コールバックはメインスレッドではないことに注意してください。
interface OnProgressListener {
    fun onProgressChange(currentSize : Long)
}

タスク完了コールバック

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

fileMeta パラメーターにはファイル情報が含まれています。

class SDFileMeta(
    // ファイル ID。
    val fileId: String?,
    // ファイル名。
    val fileName: String?,
    // ファイルパス。 アップロードタスクの場合、これはアップロードするファイルのパスです。 ダウンロードタスクの場合、これはファイルが保存されるパスです。
    val filePath: String?,
    // アップロードタスクの uploadId。 ビジネスに関連しない場合は無視できます。
    val uploadId: String? = "" 
)

class SDErrorInfo(
    // エラーコード。
    val code: SDTransferError,
    // エラーの説明。
    val message: String,
    // 例外。スタックの表示やエラー処理に使用します。
    val exception: Exception?,
    // バックエンドリクエストエラーが発生した場合、この値が返され、トラブルシューティングに役立ちます。
    var requestId: String? = "" 
)

エラーコード

SDTransferError.Unknown // 不明なエラー。
SDTransferError.Network // ネットワークエラー。
SDTransferError.Server // サーバーエラー。
SDTransferError.FileNotExist // アップロード中に、ローカルファイルが見つかりませんでした。
SDTransferError.SpaceNotEnough // ダウンロード中に、ローカルストレージの容量が不足しています。
SDTransferError.TmpFileNotExist // ダウンロード中に、ローカルの一時ファイルが存在しません。
SDTransferError.PathRuleError // ダウンロード中に、保存パスのルールが無効です。

タスクが作成されると、自動的に開始されます。進捗コールバックから現在のタスクの進捗を取得できます。タスクが成功または失敗すると、完了リスナーが呼び出されます。

ファイル API 操作

リクエストおよびレスポンスパラメーターの詳細については、「ファイル管理」API リファレンスをご参照ください。

SDClient.fileApi から fileApi オブジェクトを取得し、次のメソッドを呼び出して対応する API にアクセスします。

説明

注:リクエスト例のパラメーターは基本的なパラメーターです。その他のパラメーターについては、公式 API リファレンスをご参照ください。

ファイルまたはフォルダのリスト表示

fun fileList(fileListRequest: FileListRequest): FileListResp?

// その他の FileListRequest パラメーターについては、FileListRequest の実装をご参照ください。
val request = FileListRequest()
// リスト表示するフォルダの fileId。 ルートディレクトリには "root" を使用します。
request.parentId = "root"
// リストを含む driveId。
request.driveId = ""                    

ファイルまたはフォルダの作成

// FileCreateRequest の例。
val createRequest = FileCreateRequest()
// enum (ignore, auto_rename, refuse)
createRequest.checkNameMode = "auto_rename"
// ファイルが作成される driveId。
createRequest.driveId = "" 
// 新しいファイルの名前。
createRequest.name = ""
// 親ディレクトリの fileId。 ルートディレクトリには "root" を使用します。
createRequest.parentFileId = "root"
// enum (file, folder)
createRequest.type = "folder"                   

ファイルまたはフォルダの取得

// ファイルまたはフォルダの情報を取得します。
fun fileGet(getResp: FileGetRequest): FileGetResp?

// FileGetRequest の例。
val getRequest = FileGetRequest()
// ファイルの driveId。
getRequest.driveId = "" 
// fileId。
getRequest.fileId = ""                      

ファイルまたはフォルダのコピー

// ファイルまたはフォルダをコピーします。
fun fileCopy(fileCopyRequest: FileCopyRequest): FileCopyResp?

// FileCopyRequest の例。
val copyRequest = FileCopyRequest()
// ファイルの driveId。
copyRequest.driveId = ""  
// fileId。
copyRequest.fileId = ""
// 宛先フォルダの driveId。
copyRequest.toDriveId = ""
// コピーされたファイルの新しい名前。
copyRequest.newName = ""
// 宛先の親フォルダの fileId。 ルートディレクトリには "root" を使用します。
copyRequest.toParentId = "root"         

ファイルまたはフォルダの移動

// ファイルまたはフォルダを移動します。
fun fileMove(fileMoveRequest: FileMoveRequest): FileMoveResp?

// FileMoveRequest の例。
val moveRequest = FileMoveRequest() 
// ファイルの driveId。
moveRequest.driveId = "" 
// fileId。
moveRequest.fileId = ""
// 宛先フォルダの driveId。
moveRequest.toDriveId = ""
// 移動されたファイルの新しい名前。
moveRequest.newName = "" 
// 宛先の親ディレクトリの fileId。 ルートディレクトリには "root" を使用します。
moveRequest.toParentId = "root"             

ファイルまたはフォルダの更新

fun fileUpdate(updateRequest: FileUpdateRequest): FileGetResp?

// FileUpdateRequest の例。
val updateRequest = FileUpdateRequest()
// ファイルの driveId。
updateRequest.driveId = item.driveId!!
// fileId。
updateRequest.fileId = item.fileId 
// 更新されたファイルの新しい名前。
updateRequest.name = ""                     

ファイルまたはフォルダの削除

fun fileDelete(deleteRequest: FileDeleteRequest): FileDeleteResp?

// FileDeleteRequest の例。
val delRequest = FileDeleteRequest()
// ファイルの driveId。
delRequest.driveId = ""
// 削除するファイルまたはフォルダの fileId。
delRequest.fileId = ""                      

ファイルの検索

fun fileSearch(fileSearchRequest: FileSearchRequest): FileListResp?

// FileSearchRequest の例。  
// クエリルールについては、https://www.alibabacloud.com/help/document_detail/175890.html をご参照ください。
val request = FileSearchRequest()
// keyStr: 検索キーワード。
request.query = "name match '$keyStr' and status = 'available'"     
request.driveId = ""  

その他の操作

// ファイルシャードのアップロード URL を取得します。
fun fileGetUploadUrl(getUploadUrlRequest: FileGetUploadUrlRequest): FileGetUploadUrlResp?

// ファイルのアップロードを完了します。
fun fileComplete(completeRequest: FileCompleteRequest): FileGetResp?

// ファイルのダウンロード URL を取得します。
fun fileGetDownloadUrl(getDownloadUrlRequest: FileGetDownloadUrlRequest): FileGetDownloadUrlResp?

// 非同期タスクのステータスを取得します。 たとえば、複数のファイルを含むフォルダの削除は非同期タスクです。 このインターフェイスを使用してタスクのステータスを取得できます。
fun getAsyncTask(getAsyncTaskRequest: AsyncTaskRequest): AsyncTaskResp?