优秀网站作品下载,软件开发工程师,宁夏建设厅网站官网,江都建设集团有限公司官方网站官方照片选择器 图 1. 照片选择器提供了一个直观的界面#xff0c;便于与您的应用分享照片。
照片选择器的界面可供浏览和搜索#xff0c;并按日期降序向用户显示其媒体库中的文件。如隐私保护最佳实践 Codelab 中所示#xff0c;照片选择器为用户提供了一种安全的内置授权…官方照片选择器 图 1. 照片选择器提供了一个直观的界面便于与您的应用分享照片。
照片选择器的界面可供浏览和搜索并按日期降序向用户显示其媒体库中的文件。如隐私保护最佳实践 Codelab 中所示照片选择器为用户提供了一种安全的内置授权方式让用户可以仅向应用授予对所选图片和视频的访问权限而不是对整个媒体库的访问权限。
该工具会自动更新让应用用户能够长期使用扩展的功能而无需更改任何代码。
使用 Jetpack activity 协定
为了简化照片选择器的集成请添加 1.7.0 版或更高版本的 androidx.activity 库。
您可以使用以下 activity 结果协定来启动照片选择器
PickVisualMedia用于选择单张图片或单个视频。PickMultipleVisualMedia用于选择多张图片或多个视频。
如果照片选择器在设备上不可用该库会自动调用 ACTION_OPEN_DOCUMENT intent 操作。搭载 Android 4.4API 级别 19或更高版本的设备支持此 intent。您可以通过调用 isPhotoPickerAvailable() 来验证照片选择器在给定设备上是否可用。
选择单个媒体项
如需选择单个媒体项请使用 PickVisualMedia activity 结果协定如以下代码段所示
// Registers a photo picker activity launcher in single-select mode.
ActivityResultLauncherPickVisualMediaRequest 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());
注意使用 PickVisualMedia 时照片选择器会以半屏模式打开。 选择多个媒体项
如需选择多个媒体项请设置可选媒体文件数量上限如以下代码段所示。
// Registers a photo picker activity launcher in multi-select mode.
// In this example, the app lets the user select up to 5 media files.
ActivityResultLauncherPickVisualMediaRequest 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());
平台会限制您可以让用户在照片选择器中选择的文件数量上限。如需访问此限制请调用 getPickImagesMaxLimit()。 在不支持照片选择器的设备上系统会忽略此上限。
注意如果照片选择器不可用且支持库调用 ACTION_OPEN_DOCUMENT intent 操作则系统会忽略指定的可选媒体文件数量上限。
适用的设备
照片选择器适用于符合以下条件的设备
搭载 Android 11API 级别 30或更高版本通过 Google 系统更新接收对模块化系统组件的更改
搭载 Android 4.4API 级别 19到 Android 10API 级别 29的旧款设备以及搭载 Android 11 或 12 且支持 Google Play 服务的 Android Go 设备都可以安装向后移植的照片选择器版本。如需通过 Google Play 服务自动安装向后移植的照片选择器模块请将以下条目添加到应用清单文件的 application 标记中
!-- Trigger Google Play services to install the backported photo picker module. --
service android:namecom.google.android.gms.metadata.ModuleDependenciesandroid:enabledfalseandroid:exportedfalsetools:ignoreMissingClassintent-filteraction android:namecom.google.android.gms.metadata.MODULE_DEPENDENCIES //intent-filtermeta-data android:namephotopicker_activity:0:required android:value /
/service
保留媒体文件访问权限
默认情况下系统会授予应用对媒体文件的访问权限直到设备重启或应用停止运行。如果您的应用执行长时间运行的工作例如在后台上传大型文件您可能需要将此访问权限保留更长时间。为此请调用 takePersistableUriPermission() 方法
int flag Intent.FLAG_GRANT_READ_URI_PERMISSION;
context.contentResolver.takePersistableUriPermission(uri, flag);