How to limit an app's access to specific photos on Android, iOS, and macOS

  • Android 14 introduces partial access with READ_MEDIA_VISUAL_USER_SELECTED and enhances the Photo Picker.
  • iOS and macOS allow you to authorize "Selected Photos", full access or just add, reviewable in Settings.
  • Google Photos can be integrated with the manufacturer's gallery; it handles synchronization and deletions well.
  • Enhance privacy with app lock, Google Photos Private Folder, and Files Secure Folder.

Privacy and access control for photos on your mobile phone

If you use your mobile phone for everything and more, your images end up being both a treasure chest of memories and, at the same time, the most sensitive point of the device. Limit which photos each app can see It's no longer a whim: it's a basic privacy measure that Android, iOS, and even macOS have refined with very fine controls.

In this article we explain, in detail and without beating around the bush, how this control works in Android 14 and later (including the permission). READ_MEDIA_VISUAL_USER_SELECTED), what changes if your app uses the system photo picker, how iOS behaves with the “Selected Photos” and how to check permissions on macOS. We also review what you should know about Google Photos integrating with the manufacturer's gallery, and the native tools to protect your gallery (Private Folder, Secure Folder, app blocking...). We'll also provide context with the case of Meta and its "cloud processing" to show you why it's wise to proceed with caution.

What does it really mean to limit an app's access to specific photos?

The idea is simple: instead of allowing an app to search your entire library, you only give permission to images and videos of your choosingIn Android 14, this philosophy is embodied in the permission READ_MEDIA_VISUAL_USER_SELECTEDIn iOS and iPadOS, the setting has existed for some time. “Selected Photos”And on macOS you can authorize apps and websites at various levels (everything, items you choose, or just add).

With this limitation, applications such as social networks or editors only see what you have approved. If you then change your mindYou can expand or restrict that access from the system settings without deleting the app, and the change is immediate.

Android 14 and above: permissions, photo picker, and new rules

Android 14 introduces a partial access mode that allows apps to read only the items the user selects. To adopt this with its own gallery picker, the app must declare and use READ_MEDIA_VISUAL_USER_SELECTED in addition to standard media reading permissions. If the app instead uses the Photo Picker of the systemIt provides a consistent experience, without requesting storage permissions, and the user controls the selection with a native interface.

Pay attention to the build target: Partial access behavior is only triggered if your app targets Android 14 (API level 34) or higher. If you don't update your targetThe system can enter a compatibility mode, which we will see later.

Permissions in the manifest according to the system version

On devices with Android 12L (API 32) or lower, it is still valid READ_EXTERNAL_STORAGE to maxSdkVersion 32. Starting with Android 13 (API 33), permissions are separated by type: READ_MEDIA_IMAGES y READ_MEDIA_VIDEOAnd, if your app targets Android 14 and above, add READ_MEDIA_VISUAL_USER_SELECTED in order to manage the re-selection that the user does within your interface.

Important: Since Android 10 (API 29), many apps that only add files to shared storage (for example, saving a new photo or PDF) do not need read permissions. If you only "write" to storage And if you don't read the gallery, remove the permission request and limit READ_EXTERNAL_STORAGE a maxSdkVersion="28" at the AndroidManifest.xml.

Runtime permission request and re-selection

In addition to the manifest, you'll need to request runtime permissions according to the device's API. On Android 14 and higher, this combines the request for READ_MEDIA_IMAGES I READ_MEDIA_VIDEO to READ_MEDIA_VISUAL_USER_SELECTED so that the system opens the dialogue that allows choose specific photos and videosIf you only request video, the interface will only display videos; if you request images and videos, everything eligible will appear.

UX recommendation: incorporate a clear button or action into your app that the user taps before requesting permissions again. Prevent the system from surprising you with a dialog box I wasn't expecting, especially when I tried to reselect content.

Detect if you have full, partial, or denied access

Your app should check, at every moment, if access is full (for example, when in Android 13 you have been granted READ_MEDIA_IMAGES o READ_MEDIA_VIDEO), if it is partial (on Android 14+ with READ_MEDIA_VISUAL_USER_SELECTED granted) or if it is denied. Update the interface and flows Therefore, and remember that, among onStart y onResumeThe user may have changed permissions in Settings.

How to browse the library with MediaStore

Configure limited access to photos per application

Once access is verified, you can browse the collection with ContentResolver y MediaStoreusing column projections such as _ID, DISPLAY_NAME, SIZE o MIME_TYPEand sorting by date addedIf access is partial, the result set will reflect exactly what the user has allowed. For good production performance, use pagination (for example, with the Paging library) and run queries outside the main thread.

To cover all storage volumes in Android 10+, use the VOLUME_EXTERNAL to Images.Media.getContentUri instead of the classic URI of primary storage onlyThis ensures that you don't leave out SD cards or other external storage devices.

The “last selection” in Android 15 and Android 14 extensions

If your app runs on Android 15 or Android 14 with Play Services extension updates up to version 12, you can enable the argument QUERY_ARG_LATEST_SELECTION_ONLYThis flag causes the query to return only the last thing the user entered. just selectedUseful for refreshing views or imports without a full rescan. Check the extension with getExtensionVersion(Build.VERSION_CODES.U) and add the order with QUERY_ARG_SQL_SORT_ORDER by DATE_ADDED DESC.

Keep in mind that this capability depends on the version of the extension on the device. Don't assume it's always available; implements alternative routes when querying by last selection is not possible.

What happens when you update your device and how are permissions preserved?

If a device upgrades from an earlier version of Android to Android 14, the system attempts to preserve the previous state. For example, if in Android 13 the user granted you READ_MEDIA_IMAGES y READ_MEDIA_VIDEO And then the device updates and your app points to API 34, full access is maintained and those permissions are still granted.

If the permits came from READ_EXTERNAL_STORAGE o WRITE_EXTERNAL_STORAGE If you were on Android 12 or earlier, after updating to Android 14 the system automatically grants you READ_MEDIA_IMAGES y READ_MEDIA_VIDEO. EyeThe user can revoke or a company policy can override concessions, and auto-reset can also leave you without them. Always check in real time.

Compatibility mode if you do not adopt the new permission

If you keep your own selector and don't incorporate READ_MEDIA_VISUAL_USER_SELECTEDThe system enters a compatibility mode when the user selects or reselects photos. On the first selection, if you choose "Select photos and videos," Android temporarily grants you READ_MEDIA_IMAGES y READ_MEDIA_VIDEO during the app session, with access that expires when the app goes into the background or is closed.

Later on, if you need to expand the set, you will have to request it again. READ_MEDIA_IMAGES o READ_MEDIA_VIDEO and the system will repeat the selection flow. For an optimal experienceAdopt the new permission or use the native Photo Picker and avoid relying on temporary concessions that might surprise the user.

Best practices for working with selected photos

android gallery

There are a number of recommendations that should be followed to ensure everything goes smoothly and without any surprises. Applying them reduces friction and avoid incoherent states between what you think you can read and what you can actually read.

  • Do not save the permissions state persistently (not even in SharedPreferences nor in DataStore). Check with ContextCompat.checkSelfPermission() every time.
  • Don't assume you have full access to the entire library: with Android 14 you might be in partial access and old caches may be outdated.
  • Treats URI with temporary access: the user can change the selection or expire the concession.
  • Request only what you need: if your function is video-related, ask for READ_MEDIA_VIDEOIf it's for images, ask READ_MEDIA_IMAGES.
  • To minimize dialogues, request it in a single transaction. READ_MEDIA_VISUAL_USER_SELECTEDmultimedia reading and ACCESS_MEDIA_LOCATION if you need it.
  • It includes a control in the UI for the user manage your selection when it is in partial mode.

And a key point: it requests permissions only when they are needed, not when the app starts up. This gives the user context. and you avoid rejections for asking "just in case".

iOS and iPadOS: “Selected Photos”, “All” or “None”

On iPhone and iPad, you can decide whether an app has access to everything, only to items you choose, or nothing at all. Go to Settings > Privacy > Photos, find the app, and select selected photos, All o NoneiOS even reminds you from time to time if you want to continue sharing your entire photo library with certain apps.

A common question: if you disable limited access and switch to "All," will apps like FB, IG, or WhatsApp still be able to access your site? all your photos Just by opening the selector? What happens is that, with full access, the app can list and preview the library when you invoke its selector, always within Apple's sandbox; therefore, if you're concerned about your privacy, the sensible thing to do is to stick with selected photos and grant only what is necessary on each rise.

Additionally, from Settings > Privacy and security you can review other categories (Contacts, Calendars, Reminders, Movement and fitness, etc.) and enable or disable access by app. The approach is identical: control by categories, clear switches and the possibility of revoking at any time.

macOS: Authorize the use of your photo library in tiers

mac

On a Mac, if an app or website wants to use your photo library, you'll see a dialog box asking for permission. You can grant full access, or only to authorized users. selected elements or allow only adding photos (without reading what's already there). Everything is managed from System Settings > Privacy and Security > Photos, where you review and change who can access it.

If you authorize third parties, remember that what they collect is governed by their own rules. Privacy PolicyBefore giving the green light, take a look at those conditions; if you later regret it, go back to Settings and cut off the tap from the Photos panel.

Google Photos and the manufacturer's gallery: what you need to know

On some devices, Google Photos may share access with the manufacturer's default gallery so that you can see the content in that gallery. backed up in the cloudBy authorizing this, you allow Google Photos to exchange information from your account (such as backup status) with your phone's gallery app.

Requirements: You need a compatible device (brands like Xiaomi, OPPO, OnePlus, or Realme), Android 11 or later, and the last version from the Google Photos app. A window may appear asking for permission: tap "Don't allow" or "Allow" as you prefer, and if you change your mind, adjust it later in the Google Photos settings or in the manufacturer's gallery.

To remove Google Photos from the default gallery: Open Google Photos > your profile (top right) > Photos settings > Apps & devices > Access to Google PhotosGo to the default gallery and choose “Remove access”.

If you want to restore that access later, you'll need to do so from the manufacturer's gallery app, in something like “cloud sync" or "Backup in the cloud.” Keep in mind that you’ll have to renew the permit if you delete your Google Photos data, uninstall the app, reset your phone, or switch to a new device.

Beware of the consequences: if you allow this link, photos you delete from the manufacturer's gallery may also be deleted from Google Photos, even if they have a backup. Review the behavior Check your brand before confirming. If you want to free up space on your device without deleting the cloud backup, use "Delete from device" from Google Photos.

Are you seeing discrepancies between devices? Go to Google Photos > your profile > Review unsynchronized changes Follow the prompts to resolve editing, deletion, or restoration discrepancies. Keep in mind that if you edit in the manufacturer's gallery, Google Photos may retain the previous copy in the cloud, and certain types (like portraits) may save changes differently.

Duplicates also behave differently: your phone's gallery shows all local copies; Google Photos tends to show only one. When deleting from Google Photos, it may ask if you want to delete. all local copiesIf you delete from the default gallery, you can delete only one of the copies and keep the others.

Albums are also not equivalent between the manufacturer's gallery and Google Photos: changing the name in the gallery doesn't mean you'll see the same thing in Google Photos. If you delete Google Photos or its data, the manufacturer's gallery loses access, and Google Photos may re-upload the originals if there were any unresolved changes. Manage storage Use your head to avoid surprises.

Regarding album metadata, backing up that information from the default gallery to Google Photos is now available on devices Living It requires Google Photos backup to be enabled. It syncs by manufacturer, and if you have phones from multiple brands, Google stores separate data for each. You can delete telemetry data for a specific manufacturer from photos.google.com > Settings > “Delete data from default gallery album”.

If you don't use a manufacturer's device for 6 months, Google may delete the data from those albums (not the photos or videos). You will receive notifications by mail one month in advance and you can avoid it by using the device or downloading your content from Google services.

Native Android tools to protect your gallery without strange apps

Beyond permissions, Android incorporates useful features to prevent anyone from snooping through your gallery, even if they ask to borrow your phone for a moment. The first step is to configure a privacy password (PIN, pattern, or alphanumeric key) different from the screen lock, usually found in Settings > Privacy and security. Some features (app lock, private space) use this credential.

Android 7.1.1 update Nexus

With the "App Lock" feature included by many manufacturers, you can lock Google Photos, the phone's Gallery, or image/video editors. When you open these apps, the system requires the privacy passwordAnd the problem is solved if you leave your phone with someone or if they unlock it by looking over your shoulder.

There is also usually the option of hide appsThis prevents them from appearing in the drawer, desktop, or recent apps. It's useful for the gallery if you prefer complete invisibility. On some layers, they're displayed with a secret code in the Phone app; check your brand's help for the exact workflow.

The manufacturer's "Private Space," "Secure Folder," or "Vault" lets you isolate apps and files in a password-protected environment. This way, your gallery or sensitive albums They are not even listed in the phone's main profile, greatly reducing the risk of accidental access.

Google Photos offers the private folder (or Locked Folder) to hide sensitive items. Anything you move there disappears from the grid, searches, memories, and other apps. Unlocking it depends on your screen lock and/or your Google account. If you create the folder on your phone with backup disabled, you might not see its contents on the web; if you want access from a computer, check that setting.

To use it: On your mobile device, open Google Photos, select items, and choose “Move to Private Folder.” On the web, go to photos.google.com and set up the Private Folder section if it doesn't already exist. Remember that They don't move automatically Variants such as copies or edits: if you want to hide them, move them too, and you won't be able to send items directly from the trash to the Private Folder (first restore, then move).

Within the Private Folder, you can remove items or permanently delete them, but you can't add them to albums, share them, or edit them. They also don't appear in memories, search results, streaming devices like Chromecast, or smart displays, and removing them from all those places may take some time. Don't confuse it with the ArchiveThe Archive only hides from view, it does not protect with a lock.

If you disable backups for Private Folder, those files won't be transferred via USB or cloud migrations; if you reset your device, delete app data, or uninstall Google Photos, you could lose them. Make a backup If you're changing your phone or formatting your current one, the Private Folder may not be available on managed (business) devices or certain account types.

If you prefer to manage files instead of “photos”, Google Files incorporates a Secure folder Protected by a PIN or pattern. Go to "Explore" > "Images," select it, and tap "Move to Secure Folder." To share something, first remove it and then send it; while it's in the Secure Folder, it won't appear in the gallery or be accessible by other apps.

Real risks and current events: why it's wise to be selective

Android navigation bar buttons

We recently learned that Facebook has started suggesting "cloud processing" to generate creative ideas from your Camera Roll. By accepting this, the app can upload photos to its cloud and, according to Meta AI's terms, analyze them (including facial features). The company says it doesn't currently train its models with these unpublished photos, but doesn't rule out doing so in the future. For now, it only affects the US, although it could expand, so it's best to stay informed.

Perhaps you're like many others: for convenience, you enable full access and forget about it. iOS even reminds you from time to time if you want to continue sharing everything with certain apps, and it's easy to ignore it. limit access It's not that complicated: when you want to upload something, you grant access to that thing and that's it; one more step, yes, but quick. In apps like Instagram, go to System Settings, open the Photos permission and choose "Limited access".

We live in the age of AI, where a massive amount of data is needed to train models. Amidst controversies over the use of copyrighted content, platform data, and even cases with sensitive imagesTherefore, it's advisable to exercise extreme caution. Reading the fine print of apps has become more important than ever.

With all of the above, it's clear that your best defense is to combine system controls (Android 14's partial permissions, "Selected Photos" in iOS, the Photos panel in macOS) with practical barriers like the app lockThe manufacturer's private space and Google's secure folders. Understanding what linking Google Photos to your brand's gallery entails will help you avoid unwanted deletions and synchronization issues.

Consciously choosing what each app can access, checking permissions from time to time, and taking advantage of locking features and private folders puts you in control. Comfort doesn't have to come at the expense of privacy.With two or three well-placed adjustments, your gallery ceases to be a showcase and becomes locked, opening only when you decide.

Restrict access to photo gallery
Related article:
Restrict access to the photo gallery on Android: Tutorial