統合ガイド
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 |
プライバシーポリシー | |
SDK ダウンロード |
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?