Fotoğraf seçici, kullanıcıya medya kitaplığını en yeniden en eskiye göre sıralanmış olarak sunan, göz atılabilir bir arayüz sağlar. Gizlilikle ilgili en iyi uygulamalar kod laboratuvarında gösterildiği gibi, fotoğraf seçici, kullanıcıların uygulamanızın tüm medya kitaplıklarının yerine yalnızca seçili resimlere ve videolara erişmesine izin vermesi için güvenli ve yerleşik bir yöntem sağlar.
Cihazlarında uygun bulut medya sağlayıcıları olan kullanıcılar da şunları yapabilir: seçim yapmanıza olanak tanır. Cloud media hakkında daha fazla bilgi sağlayıcılarını ziyaret edin.
Bu araç otomatik olarak güncellenerek uygulamanızın işlevine herhangi bir kod değişikliğine gerek kalmadan zaman içinde ortaya çıkar.
Jetpack Activity sözleşmelerini kullanma
Fotoğraf seçici entegrasyonunu kolaylaştırmak için
androidx.activity
kitaplığı.
Fotoğraf seçiciyi başlatmak için aşağıdaki etkinlik sonucu sözleşmelerini kullanın:
PickVisualMedia
tek bir resim veya video seçin.PickMultipleVisualMedia
birden fazla resim veya video seçin.
Fotoğraf seçici bir cihazda kullanılamıyorsa kitaplık
ACTION_OPEN_DOCUMENT
intent işlemidir. Bu amaç Android 4.4 çalıştıran cihazlarda desteklenir
(API düzeyi 19) veya sonraki sürümler. Fotoğraf seçicinin kullanılabilir olup olmadığını doğrulayabilirsiniz
telefon ederek belirli bir cihazda
isPhotoPickerAvailable()
.
Tek bir medya öğesi seçin
Tek bir medya öğesi seçmek için PickVisualMedia
etkinlik sonucunu kullanın
aşağıdaki kod snippet'inde gösterildiği gibi aşağıdaki kod snippet'inde gösterildiği gibi:
Kotlin
// Registers a photo picker activity launcher in single-select mode. val pickMedia = registerForActivityResult(PickVisualMedia()) { uri -> // Callback is invoked after the user selects a media item or closes the // photo picker. if (uri != null) { Log.d("PhotoPicker", "Selected URI: $uri") } else { Log.d("PhotoPicker", "No media selected") } } // Include only one of the following calls to launch(), depending on the types // of media that you want to let the user choose from. // Launch the photo picker and let the user choose images and videos. pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageAndVideo)) // Launch the photo picker and let the user choose only images. pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageOnly)) // Launch the photo picker and let the user choose only videos. pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.VideoOnly)) // Launch the photo picker and let the user choose only images/videos of a // specific MIME type, such as GIFs. val mimeType = "image/gif" pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.SingleMimeType(mimeType)))
Java
// Registers a photo picker activity launcher in single-select mode. ActivityResultLauncher<PickVisualMediaRequest> pickMedia = registerForActivityResult(new PickVisualMedia(), uri -> { // Callback is invoked after the user selects a media item or closes the // photo picker. if (uri != null) { Log.d("PhotoPicker", "Selected URI: " + uri); } else { Log.d("PhotoPicker", "No media selected"); } }); // Include only one of the following calls to launch(), depending on the types // of media that you want to let the user choose from. // Launch the photo picker and let the user choose images and videos. pickMedia.launch(new PickVisualMediaRequest.Builder() .setMediaType(PickVisualMedia.ImageAndVideo.INSTANCE) .build()); // Launch the photo picker and let the user choose only images. pickMedia.launch(new PickVisualMediaRequest.Builder() .setMediaType(PickVisualMedia.ImageOnly.INSTANCE) .build()); // Launch the photo picker and let the user choose only videos. pickMedia.launch(new PickVisualMediaRequest.Builder() .setMediaType(PickVisualMedia.VideoOnly.INSTANCE) .build()); // Launch the photo picker and let the user choose only images/videos of a // specific MIME type, such as GIFs. String mimeType = "image/gif"; pickMedia.launch(new PickVisualMediaRequest.Builder() .setMediaType(new PickVisualMedia.SingleMimeType(mimeType)) .build());
Birden çok medya öğesi seçin
Birden fazla medya öğesi seçmek için aşağıdaki kod snippet'inde gösterildiği gibi seçilebilir medya dosyası sayısı için maksimum bir değer belirleyin.
Kotlin
// Registers a photo picker activity launcher in multi-select mode. // In this example, the app lets the user select up to 5 media files. val pickMultipleMedia = registerForActivityResult(PickMultipleVisualMedia(5)) { uris -> // Callback is invoked after the user selects media items or closes the // photo picker. if (uris.isNotEmpty()) { Log.d("PhotoPicker", "Number of items selected: ${uris.size}") } else { Log.d("PhotoPicker", "No media selected") } } // For this example, launch the photo picker and let the user choose images // and videos. If you want the user to select a specific type of media file, // use the overloaded versions of launch(), as shown in the section about how // to select a single media item. pickMultipleMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageAndVideo))
Java
// Registers a photo picker activity launcher in multi-select mode. // In this example, the app lets the user select up to 5 media files. ActivityResultLauncher<PickVisualMediaRequest> pickMultipleMedia = registerForActivityResult(new PickMultipleVisualMedia(5), uris -> { // Callback is invoked after the user selects media items or closes the // photo picker. if (!uris.isEmpty()) { Log.d("PhotoPicker", "Number of items selected: " + uris.size()); } else { Log.d("PhotoPicker", "No media selected"); } }); // For this example, launch the photo picker and let the user choose images // and videos. If you want the user to select a specific type of media file, // use the overloaded versions of launch(), as shown in the section about how // to select a single media item. pickMultipleMedia.launch(new PickVisualMediaRequest.Builder() .setMediaType(PickVisualMedia.ImageAndVideo.INSTANCE) .build());
Platformda kullanıcıdan isteyebileceğiniz maksimum dosya sayısı sınırlıdır.
fotoğraf seçicide seçin. Bu sınıra erişmek için şu numarayı arayın:
getPickImagesMaxLimit()
.
Fotoğraf seçicinin desteklenmediği cihazlarda bu sınır yok sayılır.
Uygun cihazlar
Fotoğraf seçici, aşağıdaki ölçütleri karşılayan cihazlarda kullanılabilir:
- Android 11 (API düzeyi 30) veya sonraki sürümleri çalıştırma
- Şununla ilgili değişiklikleri al: Modüler Sistem Bileşenleri - Google Sistem Güncellemeleri
Android 4.4 (API düzeyi 19) ile Android 10 (API düzeyi 29) arasındaki sürümleri çalıştıran eski cihazlar
Android 11 veya 12 çalıştıran Android Go cihazlar ve
Google Play Hizmetleri, fotoğraf seçicinin geri bağlanmış bir sürümünü yükleyebilir. Alıcı:
geri bağlantılandırılmış fotoğraf seçici modülünün
için aşağıdaki girişi hesabınızdaki <application>
etiketine ekleyin
uygulamanızın manifest dosyasına ait:
<!-- Trigger Google Play services to install the backported photo picker module. -->
<service android:name="com.google.android.gms.metadata.ModuleDependencies"
android:enabled="false"
android:exported="false"
tools:ignore="MissingClass">
<intent-filter>
<action android:name="com.google.android.gms.metadata.MODULE_DEPENDENCIES" />
</intent-filter>
<meta-data android:name="photopicker_activity:0:required" android:value="" />
</service>
Medya dosyası erişimini sürdür
Varsayılan olarak sistem, cihaz izin verilene kadar uygulamanızın medya dosyalarına erişmesine izin verir
yeniden başlatılacak veya uygulamanız durana kadar devam edecek. Uygulamanız,
büyük bir dosya yüklemek yerine, arka planda büyük boyutlu bir dosya yüklemek yerine
var olduğunu tespit ettik. Bunun için takePersistableUriPermission()
yöntemini çağırın:
Kotlin
val flag = Intent.FLAG_GRANT_READ_URI_PERMISSION context.contentResolver.takePersistableUriPermission(uri, flag)
Java
int flag = Intent.FLAG_GRANT_READ_URI_PERMISSION; context.contentResolver.takePersistableUriPermission(uri, flag);