All Products
Search
Document Center

Object Storage Service:Panduan Cepat (Android SDK)

Last Updated:Jul 14, 2026

Gunakan OSS Android SDK untuk membuat bucket, mengunggah objek, dan mengunduh objek.

Prasyarat

Android SDK telah diinstal. Instalasi (Android SDK).

Proyek contoh

Penting

Bidang OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET dalam kelas Config proyek contoh hanya digunakan untuk debugging lokal dan verifikasi fitur. Jangan pernah menyematkan Pasangan Kunci Akses jangka panjang secara langsung di aplikasi mobile produksi. Di lingkungan produksi, gunakan salah satu pendekatan berikut:

  • Transfer langsung sisi klien: aplikasi mobile mengambil kredensial temporary STS dari server aplikasi Anda dan menggunakannya untuk menginisialisasi OSSClient. Untuk instruksi penyiapan, lihat Siapkan transfer data langsung untuk aplikasi mobile.

  • URL yang ditandatangani sebelumnya oleh server: server aplikasi Anda menghasilkan URL yang ditandatangani dan memberikannya ke aplikasi mobile, yang kemudian melakukan unggah atau unduh melalui HTTP standar tanpa menyimpan kredensial apa pun. Pendekatan ini direkomendasikan untuk data sensitif seperti kartu identitas, gambar wajah, dan kredensial pembayaran. Untuk detailnya, lihat Otorisasi akses (Android SDK).

Untuk menggunakan proyek contoh:

  • Lihat direktori contoh untuk contoh pengunggahan file lokal, pengunduhan objek, unggah yang dapat dilanjutkan, dan callback.

  • Klon proyek menggunakan Git.

Sebelum menjalankan proyek ini, konfigurasikan parameter dalam file Config:

public class Config {    

    // Pada contoh ini, titik akhir untuk wilayah China (Hangzhou) digunakan. Tentukan titik akhir untuk wilayah Anda.
    public static final String OSS_ENDPOINT = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan URL callback.
    public static final String OSS_CALLBACK_URL = "https://oss-demo.aliyuncs.com:23450";
    // Tentukan URL server otentikasi STS.
    // Anda juga dapat menjalankan server otentikasi STS lokal berdasarkan skrip di direktori sts_local_server proyek.
    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;
}

Buat bucket

Bucket adalah namespace yang bersifat unik secara global di OSS dan digunakan untuk menyimpan objek.

// Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Atur region ke wilayah tempat bucket Anda berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke cn-hangzhou.
String region = "yourRegion";
// Pasangan AccessKey temporary (ID AccessKey dan Secret AccessKey) yang diperoleh dari server otentikasi STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari server otentikasi STS.
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

// Tentukan nama bucket.
CreateBucketRequest createBucketRequest = new CreateBucketRequest("bucketName");
// Atur daftar kontrol akses (ACL) bucket menjadi public read. ACL default adalah private.
createBucketRequest.setBucketACL(CannedAccessControlList.PublicRead);
// Tentukan wilayah tempat bucket berada.
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) {
        // Permintaan gagal.
        if (clientException != null) {
            // Exception klien, seperti error jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Exception layanan.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Unggah objek

Unggah file lokal ke OSS sebagai objek:

// Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Atur region ke wilayah tempat bucket Anda berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke cn-hangzhou.
String region = "yourRegion";
// Pasangan AccessKey temporary (ID AccessKey dan Secret AccessKey) yang diperoleh dari server otentikasi STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari server otentikasi STS.
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);

// Buat permintaan unggah.
PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectName>", "<uploadFilePath>");

// Anda dapat mengatur callback progres untuk unggah asinkron.
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) {
        // Permintaan gagal.
        if (clientExcepion != null) {
            // Exception klien, seperti error jaringan.
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // Exception layanan.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// task.cancel(); // Anda dapat membatalkan tugas.
// task.waitUntilFinished(); // Tunggu hingga unggah selesai.

Unduh objek

Unduh objek dari OSS ke file lokal:

// Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
String endpoint = "yourEndpoint";
// Pasangan AccessKey temporary (ID AccessKey dan Secret AccessKey) yang diperoleh dari server otentikasi STS.
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// Token keamanan yang diperoleh dari server otentikasi STS.
String securityToken = "yourSecurityToken";
// Atur region ke wilayah tempat bucket Anda berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke cn-hangzhou.
String region = "yourRegion";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
ClientConfiguration config = new ClientConfiguration();
config.setSignVersion(SignVersion.V4);
// Buat instans OSSClient.
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
oss.setRegion(region);
// Buat permintaan unduh.
GetObjectRequest get = new GetObjectRequest("<bucketName>", "<objectName>");

OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
    @Override
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        // Permintaan berhasil.
        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) {
                // Tambahkan kode Anda di sini untuk memproses data yang diunduh.
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // Permintaan gagal.
        if (clientExcepion != null) {
            // Exception klien, seperti error jaringan.
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // Exception layanan.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// Batalkan tugas.
// task.cancel(); 
// Tunggu hingga tugas selesai.
// task.waitUntilFinished();