Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Use Android Photo Picker when a user chooses a bounded set of photos or videos, such as an avatar, attachment, or upload. Ask for broad media-library access only when your app’s defining feature must search, index, synchronize, manage, edit, or analyze the library at scale. Photo Picker gives your app selected URI access without a runtime media permission; broad access exposes a much wider library scope and brings Android 14 partial-access handling and Google Play policy obligations.
The practical decision
The API choice should follow the user task, not the convenience of querying a large collection. A profile editor needs one image. A messaging composer may need several attachments. A backup client, gallery manager, or library-wide analyzer needs to enumerate content it did not individually ask the user to select. These are different privacy boundaries and should use different Android mechanisms.
As an Amazon Associate I earn from qualifying purchases.
A useful test is to remove the media permission from the product requirements and describe the user journey. If the user can tap “add photo,” choose an item, and continue, the picker is usually the right boundary. If the product promises to find every matching image, upload new items automatically, or apply an operation to the whole collection, it needs a library view and the additional permission and policy work that entails.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
| Question | Choose Photo Picker | Choose broad media access |
|---|---|---|
| What does the feature do? | User selects specific images or videos for an immediate task. | The app searches, indexes, backs up, synchronizes, manages, edits, or analyzes the library as a whole. |
| What does the app receive? | Narrow, user-selected URI grants. | Permission to inspect the permitted image and/or video library scope. |
| Runtime permission | None for picker selection. | READ_MEDIA_IMAGES and/or READ_MEDIA_VIDEO on Android 13+; legacy storage permission on older configurations. |
| Android 14 work | The picker handles selection without your custom gallery needing partial-access logic. | You must support full, partial, and denied states, reselection, revocation, and lifecycle changes. |
| Cloud media experience | Eligible cloud providers can appear in the standard picker. | Direct library queries do not automatically provide that picker cloud-provider experience. |
| Editing returned content | Picker URIs are read-only; copy or process the data in app-controlled storage. | Use MediaStore APIs and obtain separate authorization for writes or updates. |
How Photo Picker changes the privacy boundary
When the picker opens, the user chooses the exact images or videos to share. Your app receives URI access for those selections rather than a standing view of the rest of the library. Android describes this as a safe, built-in selection flow that avoids granting access to the entire media library.
#1 Best Overall
- 【Strong Adsorption】The inspiration of the silicone phone suction case comes from the adhesive force of the octopus. Each suction cup phone mount is 3.15 inches long and 2.17 inches wide, with 24 independent suction cups providing a stronger and more stable suction force, so you don't have to worry about your phone falling during use.
- 【Back of Phone Suction Grip】Remove the adhesive film on the phone suction cup and stick it on the phone case. You can then fix the phone on any smooth surface, which is very convenient. (The phone suction cup cannot be removed and reused after being attached to the phone case. It is recommended to attach it to a regular phone case, not a valuable one.)
- 【Widely Used】Our non-slip silicone phone sticky grip mount attaches to almost any flat phone case and make it compatible with common mobile phones such as iPhone and Android.You can shoot, watch videos or video calls in the kitchen, gym, dance studio, bathroom and other places.
- 【Capture the Wonderful Picture】Whether you are a TikTok creator or just like to share videos and photos, this phone suction cup can help you hands-free capture wonderful videos and photos for sharing with friends.
- 【Note】You can fix the phone suction cup on a smooth surface such as a mirror or glass. If necessary, wipe the suction cup with a damp cloth to obtain stronger suction. Before releasing your hand, make sure the phone is firmly fixed. (Not applicable to rough walls, wooden surfaces, and other uneven surfaces)
That narrow grant is useful even when your app is trustworthy: it limits accidental indexing, reduces the impact of a compromised component, and makes the consent screen match the task. It also avoids asking users to interpret a broad permission request for an operation that needs only one file. A user can share a single image without revealing screenshots, documents, or older albums that are irrelevant to the workflow.
The picker is a selection surface, not a replacement for a library database. Your app should be able to complete its workflow from the returned URIs. If the feature cannot function without discovering unrelated items, a broad permission may be justified instead. Do not silently turn a one-item upload into a background scan just because the app already has a URI.
Photo Picker also gives users a consistent system experience. Eligible cloud-media providers can appear in that surface, so a user may select an item that is not currently stored as a local file. The app should therefore consume the content through ContentResolver rather than assuming a local filesystem path or a particular provider.
What full media-library access enables—and costs
Broad access lets an app query permitted images and videos without the user selecting each item. That is necessary for products whose core value depends on a complete or continuously changing collection: backup and synchronization, gallery management, library-wide search, bulk editing, and media analysis.
On Android 13 (API level 33), READ_EXTERNAL_STORAGE was replaced for modern targets by granular READ_MEDIA_IMAGES and READ_MEDIA_VIDEO. Declare only the media type you actually need. Requesting both when the feature handles only photos expands the permission and the policy review without adding functionality. A video editor that never reads still images should not request image access merely because the manifest example contains both permissions.
Google Play restricts the READ_MEDIA_* permissions to permitted core use cases. A feature that merely offers an occasional upload is a poor justification for broad access; use the picker instead. A library-wide product must document why continuous or bulk access is essential and be prepared for permission denial. The permission should be requested in the context of that core feature, with a clear explanation of what the app will do and what will remain unavailable if the user declines.
Broad access is also an operational commitment. The set of visible media can change while the app is stopped, the user can revoke access, and Android 14 can limit visibility to selected items. Queries, indexes, thumbnails, and background jobs must tolerate missing rows and an empty result. Treating one successful permission check as a permanent guarantee is a common source of crashes and stale data.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteRank #2
- SUPERIOR COMFORT — Unlike traditional circular ear buds, the design of EarPods is defined by the geometry of the ear. Which makes them more comfortable for more people than any other ear bud–style headphones.
- HIGH-QUALITY AUDIO — The speakers inside EarPods have been engineered to maximize sound output and minimize sound loss, which means you get high-quality audio.
- BUILT-IN REMOTE — EarPods with USB-C plug also include a built-in remote that lets you adjust the volume, control the playback of music and video, and answer or end calls with a pinch of the cord.
- COMPATIBILITY — Works with all devices that have a USB-C port.
- INTEGRATED MICROPHONE — A built-in microphone precisely captures your voice while you’re on the phone, taking a FaceTime call, or summoning Siri — so you’re always heard loud and clear.
Android version and compatibility timeline
| Android release | Relevant change | Implementation implication |
|---|---|---|
| Android 13, API 33 (2022) | Photo Picker became a platform feature; granular media permissions replaced broad legacy storage permission for modern targets. | Use Photo Picker for selection and request READ_MEDIA_IMAGES/READ_MEDIA_VIDEO only for library-wide features. |
| Android 14, API 34 (2023) | Selected Photos Access introduced partial-library grants and READ_MEDIA_VISUAL_USER_SELECTED. |
Custom galleries must model full, partial, and denied states and let users change the selection. |
| Android 11+, API 30+ | Native Photo Picker is available on devices receiving the required modular system updates. | Most current devices can use the system picker without app-managed storage permission. |
| Android 4.4–10, API 19–29 | Google Play services can install a backported picker on supported devices and supported Android Go devices. | Use the AndroidX contract so the app can select the best available implementation. |
Availability on older phones is therefore not simply “Android 13 or newer.” Native support starts with Android 11 where modular updates are present; Google Play services may backport the picker to Android 4.4 through Android 10 on supported devices. Devices without that path fall through to the AndroidX document-provider behavior. Test the actual fallback on representative devices rather than assuming every manufacturer exposes the same picker UI.
The compatibility promise is about the selection contract, not identical visuals. The framework picker, an OEM implementation, and ACTION_OPEN_DOCUMENT can differ in sorting, cloud-provider visibility, and cancellation details. Your result-handling code should depend on the returned URI and documented contract, not on screen text or a particular album layout.
Implementing Photo Picker with AndroidX
For a modern Kotlin app, register an AndroidX activity-result contract rather than constructing picker intents by hand. The contract prefers the framework picker, then an OEM system fallback, and finally ACTION_OPEN_DOCUMENT on API 19 and newer. This keeps version selection in the library and gives the app one result callback.
Single-image or single-video selection
- Register
ActivityResultContracts.PickVisualMediawith an activity or fragment. - Launch it with a media type such as
PickVisualMedia.ImageOnly,VideoOnly, orImageAndVideo. - Handle a null result when the user cancels.
- Open the returned content URI with
ContentResolverand process it without requesting a media-read permission.
Keep the callback lightweight. Hand the URI to a worker or repository, validate its type and size, and show progress in the UI. A canceled picker is a normal user outcome, not an exceptional error, so it should leave the previous form state intact.
Multiple selection
- Register
ActivityResultContracts.PickMultipleVisualMedia. - Set a maximum count that matches the workflow rather than allowing an unbounded import.
- Process each returned URI and show per-item failures if a provider cannot open one of them.
- Persist access before scheduling work that may outlive the current activity.
The maximum count is a product decision as well as an implementation parameter. A message composer may allow several attachments, while an avatar flow should use the single-item contract. Validate the count again when processing because providers and fallback implementations can have different practical limits.
Persisting access for uploads and deferred work
A URI grant may otherwise be temporary. For a long-running upload, background transform, or queued job, call takePersistableUriPermission() with the read flag (and write only when a provider explicitly supports it). Store the URI and the grant flags in your database, then release grants when the job and any retry window are finished.
Android documents a cap of 5,000 simultaneous persisted media grants per app. Older grants are removed as new selections exceed that limit, so a queue that can grow indefinitely must retain its own durable copy or enforce retention rather than assuming every historical URI remains readable. A practical queue records whether a local copy has completed, removes obsolete grants, and reports a failed or revoked URI instead of retrying forever.
Rank #3
- Secure Hold: Our PopSockets adhesive phone grip gives your cell phone a secure, comfortable hold in hand to help prevent drops while texting, taking photos, or scrolling on the go. Designed to stick firmly to most phone cases and devices.
- Hands-Free Made Easy: Easily turn your PopSocket into a phone stand to prop up your phone anywhere, perfect for watching videos, video calls, or following recipes. A must-have phone holder that keeps your device secure and ready for anything.
- Compatibility: Works with all phones, tablets, and Kindles. Sticks best to smooth, hard plastic cases and may not adhere to silicone or textured cases. Easily swap your PopTop to change up your style.
- Black PopSockets: Simple, refined, and endlessly versatile. A timeless essential for any phone.
- Travel Must-Have for People On the Go: A must-have travel accessory for flights, flying, airports, air travel, airplanes, planes, international trips, cruises, and long travel days. Key gadget for your airport haul, travel accessories and must-haves.
Handling the returned URI safely
- Treat picker URIs as read-only input. Do not assume you can rename, overwrite, or delete the source item.
- Inspect the MIME type and stream the content through
ContentResolver.openInputStream(); do not rely on a filesystem path. - Copy content into app-controlled storage when you need random access, durable processing, thumbnails, or edits.
- Close streams promptly and enforce size, type, and decode limits before handing data to image or video libraries.
- Expect provider-specific delays and transient failures, especially for cloud-backed items. Keep the UI cancellable and retry safely.
A URI may represent a remote cloud asset, so opening it can take longer than opening a local file and may fail when the device is offline. Show a useful progress or retry state and avoid blocking the main thread. If the app needs a durable local artifact, finish the copy before reporting that an upload or edit is complete.
Read-only does not mean unusable for editing. Decode or copy the selected content into app-controlled storage, perform the transformation there, and export the result through the appropriate MediaStore or sharing flow. For edits to an existing library item, use the MediaStore APIs and the separate write or update authorization required by that operation.
Android 14 Selected Photos Access: the states you must model
Apps that maintain a custom gallery or query MediaStore on Android 14 can encounter three meaningful outcomes:
- Full access: the user permits the app to read the available library scope.
- Partial access: the user permits only selected visual media.
- Denied: the app has no read access.
READ_MEDIA_VISUAL_USER_SELECTED is the permission associated with maintaining a selected-media flow. A custom gallery that is not adapted can run in compatibility mode, which may not match the app’s assumptions about what is visible. Users can also change their selection later, so a grant observed at first launch is not permanent.
Partial access is not a transient loading state. It is a valid user choice that should shape the UI: label the visible collection accurately, provide a route to select more items, and never imply that the app has searched the entire library. If a feature requires complete coverage, explain that limitation and offer settings or an alternate workflow rather than silently omitting media.
Recommended Free Tools
Required lifecycle behavior
- Declare and request only the media permissions required by the feature, including
READ_MEDIA_VISUAL_USER_SELECTEDwhen your Android 14 custom-gallery design needs it. - After every permission request, distinguish full, partial, and denied outcomes instead of treating any grant as full-library access.
- Re-check access in
onResume()or the equivalent foreground callback. Users can revoke permission or alter selected items in system settings while your activity is stopped. - When partial access is detected, provide a clear “select more photos” or reselection action and refresh the visible dataset.
- Handle an empty result, revoked URI, or deleted item without crashing or silently assuming the old selection still exists.
If the feature can use Photo Picker, choosing it avoids this custom partial-access state machine. That is one of the strongest compatibility reasons to prefer the picker for ordinary upload and attachment workflows.
HDR video and transcoding limits
Photo Picker can transcode HDR video to SDR when the app declares media capabilities that do not support the HDR format. This protects an older or simpler processing pipeline, but transcoding consumes time and cache space. Android’s documented limit for this HDR-transcoding path is one minute of video length.
Rank #4
- [360 ° Flexible Rotation Design] Comes with a rotatable lanyard ring that supports 360 ° free rotation, effectively solving the problem of twisted and tangled lanyards
- [Wide compatibility] The ultra-thin 0.02-inch design does not block the charging port at all, and both wired and wireless charging can be used directly without removing the pad. Compatible with most smartphones such as iPhone, compatible with various wristbands, lanyards, crossbody straps, and keychains
- [Durable and Portable Material] Premium rust-resistant stainless steel material with good flexibility, which not only avoids scratching the phone case, but also has excellent anti rust and anti fading performance
- [Multi scenario Practical] Paired with a lanyard or wristband, hands-free use can be achieved. The phone is within reach and not easily dropped, ideal for daily commuting and outdoor activities. Suitable for full coverage phone cases, does not support half coverage phone cases
- [Quality Service] If you find any damage or other issues with the product upon receipt, please contact us immediately. We will handle it quickly
Declare the formats your decoder and encoder genuinely support. Test the user experience when a selected HDR clip is converted: show progress, reserve temporary storage, handle cancellation, and report when a clip exceeds the one-minute limit or cannot be converted within the app’s capabilities. Do not claim HDR support if the downstream upload, preview, or export path will discard it.
When broad access is the defensible choice
Library-wide search and indexing
If search must find any matching image without asking the user to select every candidate, the app needs a queryable library view. Explain why indexing is central, request the narrowest image/video combination, and keep the index synchronized with additions, deletions, and permission changes. A search screen that only needs the user’s chosen album can often use the picker instead of a permanent permission.
Backup and synchronization
A backup client cannot wait for a manual picker selection each time a new photo appears. It needs ongoing discovery, upload scheduling, conflict handling, and a response to revoked access. Broad permission is appropriate only when this continuous backup function is the product’s core purpose. Background work should still handle network failure, deleted media, changed permissions, and user cancellation.
Gallery management and bulk operations
Sorting, deduplication, batch conversion, or library-wide edits require enumeration and often write operations. Reading permission alone does not grant unrestricted mutation: use MediaStore APIs and request or use the separate authorization needed for updates and deletes. Keep destructive actions explicit and scoped to the items currently visible under the user’s grant.
Failure modes and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Picker works on a new phone but not an older test device. | No native picker module or supported Google Play services backport is available. | Use the AndroidX contract and verify the document-provider fallback on API 19+. |
| Upload fails after the app is killed. | The temporary URI grant expired. | Call takePersistableUriPermission(), persist the URI, and retain a retry-safe copy when appropriate. |
| A custom gallery shows fewer items than expected on Android 14. | The user granted partial access or changed the selected set. | Re-check state on resume, request reselection, and query according to the current grant. |
| The app asks for media permission for a one-off attachment. | The workflow was implemented as a library query instead of a selection flow. | Replace the permission request with PickVisualMedia or PickMultipleVisualMedia. |
| Editing a selected item fails. | Picker URI is read-only or the provider does not expose a writable document. | Copy to app storage for editing, or use the appropriate MediaStore write/update authorization for library edits. |
| Large HDR clip takes too long or cannot be selected. | Declared capabilities trigger SDR transcoding, and the clip exceeds the documented one-minute limit or available resources. | Declare accurate capabilities, show progress, budget cache space, and provide a compatible conversion or rejection message. |
| Permission appears granted but queries return nothing. | Permission was revoked, the selected set changed, or the app cached an old state. | Re-query permission in the foreground and treat zero results as a valid state. |
| A cloud item opens slowly or fails offline. | The URI points to provider-managed content that is not available locally. | Keep the operation asynchronous, provide retry and cancellation, and copy the content locally only after a successful read. |
A release checklist
- Map every media feature to either bounded user selection or library-wide operation.
- Use the AndroidX picker contracts for selection workflows.
- Declare only the image and video permissions actually required.
- For Android 13+ broad access, use
READ_MEDIA_IMAGESand/orREAD_MEDIA_VIDEO; do not rely on obsoleteREAD_EXTERNAL_STORAGEbehavior. - For Android 14 custom galleries, implement
READ_MEDIA_VISUAL_USER_SELECTED, partial grants, reselection, revocation, and resume-time checks. - Test Android 4.4–10 fallback behavior, Android 11+ picker availability, Android 13 permission prompts, and Android 14 partial access.
- Persist long-running picker grants and enforce a retention policy below the 5,000-grant cap.
- Keep picker content read-only and copy data when the workflow needs durable or editable files.
- Test local and cloud-backed media, cancellation, deleted items, denied permission, and process death.
- Document the core feature that justifies any broad permission for Google Play review.
- Test empty selections, revoked grants, changed partial selections, and provider read failures as normal paths.
- Verify that declared HDR capabilities match the actual decoder and encoder, including the one-minute transcoding limit.
Bottom line for product and engineering teams
Photo Picker is the least-privilege default for avatars, attachments, upload forms, and bounded imports. It works across a wide Android range through native modules, Google Play services backporting, and AndroidX fallback behavior, while avoiding a runtime media permission. Full access is a specialized capability for apps whose defining function is the user’s entire library; on Android 14, that choice requires explicit handling of partial selection, reselection, revocation, and permission-aware lifecycle changes. Choosing the API that matches the task produces a clearer consent experience, fewer compatibility surprises, and a stronger policy position.
Frequently Asked Questions
Does Photo Picker require READ_MEDIA_IMAGES or READ_MEDIA_VIDEO?
No. A picker selection flow does not require a runtime media-read permission. The user chooses items in the system surface and your app receives URI access for those items. Request READ_MEDIA_IMAGES or READ_MEDIA_VIDEO only when the app must query media beyond individually selected content.
Will Photo Picker work on Android 10 or older?
The native picker is available on Android 11 and newer devices that receive the required modular updates. Google Play services can provide a backported picker on supported Android 4.4 through Android 10 devices and supported Android Go devices. AndroidX contracts then fall back to an OEM implementation or ACTION_OPEN_DOCUMENT when needed.
Best Value
- 【PKYAA Double Sided Silicone Suction Phone Case Mount】PKYAA With Double Sided 40 Strong and Reliable individual suction cups, PKYAA provides a thicken and upgraded universal silicon suction mount for your phone.
- 【Friendly to Content Creators】If you are a content creator or an online influencer, you can create videos anywhere with this suction mount completely hands free with this silicone cell phone mount for cases.
- 【HANDS-FREE & Adhere to Mirrors】This Double Sided silicone suction phone case mount allows you to stick your phone to the mirror easily. No longer holding your phone in one hand to watch video tutorials while making up.
- 【Strong Grip on the Smooth Surface】You can easily hang your phone anywhere with a smooth surface. All you do is you clean off your phone and smooth surface. It is STURDY and it not only sticks to mirrors, it also sticks to windows, it sticks to refrigerators, tiles and other clean, flat surfaces.
- 【Press Down Firmly Every 30 Minutes】Use your palm or fingers to press the phone down firmly and check it's secure before letting go. Apply even pressure for a few seconds to allow the suction cup to adhere properly. To maintain the grip and prevent accidental falls, it's a good practice to periodically reapply pressure to the suction cup.
What happens if an Android 14 user chooses only selected photos?
A custom gallery may receive partial access rather than a full-library view. Model full, partial, and denied states, refresh the query, offer a reselection action, and check permission again whenever the app returns to the foreground. Users can change the selected set later.
Can an app edit a photo returned by Photo Picker?
Treat the returned URI as read-only. Copy or decode the content into app-controlled storage for editing, or use MediaStore APIs and the required write or update authorization when changing a library item.
How long does a picker URI remain usable?
A temporary grant may not survive process death or deferred work. For a long-running upload or background job, call takePersistableUriPermission with the read flag when supported, store the URI and flags, and release the grant when it is no longer needed.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Is there a limit on persisted picker grants?
Android documents a maximum of 5,000 simultaneous persisted media grants per app. Older grants are removed as new selections exceed the cap, so long-lived queues should copy content when appropriate and enforce their own retention policy.
Can Photo Picker show cloud photos?
Eligible cloud-media providers can appear in the standard picker. The returned URI may refer to provider-managed content, so read it through ContentResolver, keep the operation asynchronous, and handle delays or offline failures.
When is full media access justified?
Use broad access when the product’s core function requires library-wide search, indexing, backup, synchronization, gallery management, bulk editing, or analysis. The app must request only the needed media types, handle denial and revocation, support Android 14 partial access, and meet Google Play’s permitted-use requirements.
What permission replaced READ_EXTERNAL_STORAGE on Android 13?
For apps targeting Android 13 and newer, granular READ_MEDIA_IMAGES and READ_MEDIA_VIDEO permissions cover access to other apps’ images and videos. Declare and request only the type the feature actually processes.
Free tools Windows power users keep installed
One-click scans. No signup required.
What is the HDR video limitation?
If declared media capabilities do not support HDR, Photo Picker can transcode selected HDR video to SDR. The documented HDR-transcoding path has a one-minute video-length limit, and the app must budget processing time and temporary cache space.
The Bottom Line
Use Photo Picker for bounded, user-initiated selection; use broad media permissions only for a genuine library-wide product. The picker minimizes exposure, avoids a runtime media permission, supports cloud-backed choices, and can be adopted through AndroidX across older devices. Full access brings Android 13 granular permissions, Google Play restrictions, and Android 14 full/partial/denied-state handling. Design for URI persistence, read-only content, revocation, and HDR limits before shipping.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

