Selamat datang di Pratinjau Developer Android 13. Beri kami masukan, dan bantu kami menjadikan Android 13 sebagai rilis terbaik.

Pemilih foto

Dialog pemilih foto akan muncul dengan file media di perangkat Anda. Pilih foto untuk dibagikan dengan aplikasi.
Gambar 1. Alat pilih foto menyediakan UI yang intuitif untuk berbagi foto dengan aplikasi.

Android 13 menyertakan dukungan untuk alat pemilih foto baru. Alat ini memberikan cara yang aman dan bawaan bagi pengguna untuk memilih file media, tanpa perlu memberikan akses aplikasi Anda ke seluruh library media mereka.

Pemilihan media

Pemilih foto menyediakan antarmuka yang dapat ditelusuri dan dapat dijelajahi yang menyajikan library media kepada pengguna, yang diurutkan berdasarkan tanggal (dari yang terbaru hingga terlama). Anda dapat menentukan bahwa pengguna hanya akan melihat foto atau hanya video, dan jumlah maksimum pilihan media yang diizinkan secara default ditetapkan ke 1.

Menentukan batasan berbagi

Aplikasi dapat mendeklarasikan nilai untuk android.provider.extra.PICK_IMAGES_MAX, yang menunjukkan jumlah maksimum file media yang muncul di alat pilih foto saat ditampilkan kepada pengguna. Misalnya, jika Anda meminta pengguna memilih foto profil yang diperlukan untuk akunnya, tetapkan satu foto sebagai persyaratan berbagi maksimum.

Untuk meluncurkan alat pilih foto dalam mode pilihan tunggal, lakukan hal berikut:

Kotlin

// Launches photo picker in single-select mode.
// This means that the user can select one photo or video.
val intent = Intent(MediaStore.ACTION_PICK_IMAGES)
startActivityForResult(intent, PHOTO_PICKER_REQUEST_CODE)

Java

// Launches photo picker in single-select mode.
// This means that the user can select one photo or video.
Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
startActivityForResult(intent, PHOTO_PICKER_REQUEST_CODE);

Memilih beberapa foto atau video

Jika kasus penggunaan aplikasi Anda mengharuskan pengguna memilih beberapa foto atau video, Anda dapat menentukan jumlah maksimum gambar yang akan muncul di alat pilih foto menggunakan tambahan EXTRA_PICK_IMAGES_MAX, seperti yang ditunjukkan dalam kode cuplikan berikut:

Kotlin

// Launches photo picker in multi-select mode.
// This means that user can select multiple photos/videos, up to the limit
// specified by the app in the extra (10 in this example).
val maxNumPhotosAndVideos = 10
val intent = Intent(MediaStore.ACTION_PICK_IMAGES)
intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotosAndVideos)
startActivityForResult(intent, PHOTO_PICKER_MULTI_SELECT_REQUEST_CODE)

Java

// Launches photo picker in multi-select mode.
// This means that user can select multiple photos/videos, up to the limit
// specified by the app in the extra (10 in this example).
final int maxNumPhotosAndVideos = 10;
Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotosAndVideos);
startActivityForResult(intent, PHOTO_PICKER_MULTI_SELECT_REQUEST_CODE);

Perhatikan bahwa ada batas platform pada jumlah terbesar yang dapat Anda tentukan sebagai jumlah file maksimum. Untuk mengakses batas ini, panggil MediaStore#getPickImagesMaxLimit().

Menangani hasil alat pilih foto

Setelah alat pilih foto diluncurkan, gunakan intent ACTION_PICK_IMAGES baru untuk menangani hasilnya. Pemilih menampilkan kumpulan URI:

Kotlin

// onActivityResult() handles callbacks from the photo picker.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode != Activity.RESULT_OK) {
        // Handle error
return
    }
    when (requestCode) {
            REQUEST_PHOTO_PICKER_SINGLE_SELECT -> {
            // Get photo picker response for single select.
            val currentUri: Uri = data.data

            // Do stuff with the photo/video URI.
            return
        }
                REQUEST_PHOTO_PICKER_MULTI_SELECT -> {
            // Get photo picker response for multi select.
            var i = 0
            while (i < data.clipData!!.itemCount) {

Java

// onActivityResult() handles callbacks from the photo picker.
@Override
protected void onActivityResult(
    int requestCode, int resultCode, final Intent data) {

    if (resultCode != Activity.RESULT_OK) {
        // Handle error
        return;
    }

    switch(requestCode) {
        case REQUEST_PHOTO_PICKER_SINGLE_SELECT:
            // Get photo picker response for single select.
            Uri currentUri = data.getData();

            // Do stuff with the photo/video URI.
            return;
        case REQUEST_PHOTO_PICKER_MULTI_SELECT:
            // Get photo picker response for multi select
            for (int i = 0; i < data.getClipData().getItemCount(); i++) {
                Uri currentUri = data.getClipData().getItemAt(i).getUri();

                // Do stuff with each photo/video URI.
            }
            return;
    }
}

Secara default, alat pilih foto akan menampilkan foto dan video. Anda juga dapat memfilter berdasarkan foto atau hanya video dengan menyetel jenis MIME dalam metode setType(). Misalnya, untuk hanya menampilkan video di alat pilih foto, teruskan video/* ke setType():

Kotlin

// Launches photo picker for videos only in single select mode.
val intent = Intent(MediaStore.ACTION_PICK_IMAGES)
intent.type = "video/*"
startActivityForResult(intent, PHOTO_PICKER_VIDEO_SINGLE_SELECT_REQUEST_CODE)

// Apps can also change the mimeType to allow users to select
// images only - intent.type = "images/*"

Java

// Launches photo picker for videos only in single select mode.
Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
intent.setType("video/*");
startActivityForResult(intent, PHOTO_PICKER_VIDEO_SINGLE_SELECT_REQUEST_CODE);

// Apps can also change the mimeType to allow users to select
// images only - intent.setType("images/*");
// or a specific mimeType - intent.setType("image/gif");