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

Object Storage Service:クイックスタート (Android SDK)

最終更新日:Nov 30, 2025

この Topic では、OSS Android SDK を使用して、バケットの作成、ファイル (オブジェクト) のアップロード、ファイルのダウンロードなどの一般的な操作を実行する方法について説明します。

前提条件

Android SDK がインストールされていること。詳細については、「Android SDK のインストール」をご参照ください。

サンプルプロジェクト

次のセクションでは、サンプルプロジェクトの使用方法について説明します。

  • サンプルフォルダには、ローカルファイルのアップロード、ファイルのダウンロード、再開可能なアップロード、コールバックの設定などの操作例が含まれています。詳細については、GitHub をご参照ください。

  • プロジェクトを git clone します。

このプロジェクトを実行する前に、必要な Config パラメーターを設定する必要があります。次のコードは構成例です。

public class Config {    

    // 例として中国 (杭州) リージョンを使用します。実際の要件に基づいてリージョンを指定します。
    public static final String OSS_ENDPOINT = "https://oss-cn-hangzhou.aliyuncs.com";
    // コールバック URL を指定します。
    public static final String OSS_CALLBACK_URL = "https://oss-demo.aliyuncs.com:23450";
    // STS 認証サーバーのアドレスを指定します。
    // プロジェクトの sts_local_server ディレクトリにあるスクリプトを使用して、ローカル STS 認証サーバーを起動することもできます。
    public static final String STS_SERVER_URL = "http://****/sts/getsts";
    
    public static final String BUCKET_NAME = "yourBucketName";
    public static final String OSS_ACCESS_KEY_ID = "yourAccessKeyId";
    public static final String OSS_ACCESS_KEY_SECRET = "yourAccessKeySecret";

    public static final int DOWNLOAD_SUC = 1;
    public static final int DOWNLOAD_Fail = 2;
    public static final int UPLOAD_SUC = 3;
    public static final int UPLOAD_Fail = 4;
    public static final int UPLOAD_PROGRESS = 5;
    public static final int LIST_SUC = 6;
    public static final int HEAD_SUC = 7;
    public static final int RESUMABLE_SUC = 8;
    public static final int SIGN_SUC = 9;
    public static final int BUCKET_SUC = 10;
    public static final int GET_STS_SUC = 11;
    public static final int MULTIPART_SUC = 12;
    public static final int STS_TOKEN_SUC = 13;
    public static final int FAIL = 9999;
    public static final int REQUESTCODE_AUTH = 10111;
    public static final int REQUESTCODE_LOCALPHOTOS = 10112;
}

バケットの作成

バケットは OSS のグローバルな名前空間です。データを格納するコンテナーとして機能し、複数のファイルを格納できます。次のコードは、バケットを作成する方法を示しています。

// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
String endpoint = "yourEndpoint";
// yourRegion を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "yourRegion";
// STS から取得した一時的な AccessKey ID と AccessKey Secret。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// STS から取得したセキュリティトークン。
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// OSSClient インスタンスを作成します。
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

// バケット名を指定します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("bucketName");
// バケットのアクセス制御リスト (ACL) を public-read (公開読み取り) に設定します。デフォルトの ACL は private (非公開) です。
createBucketRequest.setBucketACL(CannedAccessControlList.PublicRead);
// バケットが配置されているリージョンを指定します。
createBucketRequest.setLocationConstraint("oss-cn-hangzhou");
OSSAsyncTask createTask = oss.asyncCreateBucket(createBucketRequest, new OSSCompletedCallback<CreateBucketRequest, CreateBucketResult>() {
    @Override
    public void onSuccess(CreateBucketRequest request, CreateBucketResult result) {
        Log.d("locationConstraint", request.getLocationConstraint());
        }
    @Override
    public void onFailure(CreateBucketRequest request, ClientException clientException, ServiceException serviceException) {
        // リクエストは失敗しました。
        if (clientException != null) {
            // ネットワーク例外などのローカル例外が発生しました。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // サーバー側例外が発生しました。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

ファイルのアップロード

次のコードは、ローカルファイルを OSS にアップロードする方法を示しています。

// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
String endpoint = "yourEndpoint";
// STS から取得した一時的な AccessKey ID と AccessKey Secret。
// yourRegion を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "yourRegion";
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// STS から取得したセキュリティトークン。
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// OSSClient インスタンスを作成します。
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

// アップロードリクエストを作成します。
PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectName>", "<uploadFilePath>");

// 非同期アップロードの進行状況コールバックを設定します。
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
    @Override
    public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
        Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});

OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
    @Override
    public void onSuccess(PutObjectRequest request, PutObjectResult result) {
        Log.d("PutObject", "UploadSuccess");
        Log.d("ETag", result.getETag());
        Log.d("RequestId", result.getRequestId());
    }

    @Override
    public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // リクエストは失敗しました。
        if (clientExcepion != null) {
            // ネットワーク例外などのローカル例外が発生しました。
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // サーバー側例外が発生しました。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// task.cancel(); // タスクをキャンセルできます。
// task.waitUntilFinished(); // アップロードが完了するまで待機します。

ファイルのダウンロード

次のコードは、OSS ファイルをローカルファイルにダウンロードする方法を示しています。

// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
String endpoint = "yourEndpoint";
// STS から取得した一時的な AccessKey ID と AccessKey Secret。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// STS から取得したセキュリティトークン。
String securityToken = "yourSecurityToken";
// yourRegion を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "yourRegion";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// OSSClient インスタンスを作成します。
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);
// ダウンロードリクエストを作成します。
GetObjectRequest get = new GetObjectRequest("<bucketName>", "<objectName>");

OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
    @Override
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        // リクエストは成功しました。
        Log.d("asyncGetObject", "DownloadSuccess");
        Log.d("Content-Length", "" + result.getContentLength());

        InputStream inputStream = result.getObjectContent();
        byte[] buffer = new byte[2048];
        int len;

        try {
            while ((len = inputStream.read(buffer)) != -1) {
                // ここにコードを記述して、ダウンロードしたデータを処理できます。
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    // GetObject リクエストが成功すると、GetObjectResult が返されます。GetObjectResult には入力ストリームインスタンスが含まれています。返された入力ストリームを処理する必要があります。
    public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // リクエストは失敗しました。
        if (clientExcepion != null) {
            // ネットワーク例外などのローカル例外が発生しました。
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // サーバー側例外が発生しました。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// タスクをキャンセルします。
// task.cancel(); 
// タスクが完了するまで待機します。
// task.waitUntilFinished();