[Question]: NEW Android Photo and Video Permissions policy
Please check the following before submitting a new issue.
- [X] I have searched the existing issues.
- [X] I have carefully read the documentation.
Please select for which platform(s) you need help
- [X] Android
- [ ] iOS
- [ ] Windows
Your question
Our App uses the permission_handler and file_picker to set a custom wallpaper background. I suddenly saw those news from Android. Can we continue to use permission_handler and file_picker for our app? Anyone experience with switching the way photos are ulpoaded and stored?
We do not use READ_MEDIA_IMAGES or READ_MEDIA_VIDEO in the app. We check the permission with Permission.storage.request() for Android SdkInt < 33. From Android 33 onwards, no additional permissions are required. Presumably, READ_MEDIA access is only needed if you want to access media created by other apps—which has not been relevant for us so far. Is that correct?
Last October, Android introduced the Photo and Video Permissions policy to reduce the number of apps permitted to request broad photo/video permissions (READ_MEDIA_IMAGES and READ_MEDIA_VIDEO). Starting October 31, 2024, apps may only access photos and videos for purposes directly related to app functionality. Apps that have a one-time or infrequent need to access these files are requested to use a system picker, such as the Android photo picker. Learn more https://developer.android.com/reference/android/Manifest.permission#READ_MEDIA_IMAGES https://support.google.com/googleplay/android-developer/answer/14115180
Version
11.3.1
Hello,
Same here, need some information about this (i work on a messaging app which can send medias, upload avatar picture, etc but no modification). I follow this post
We have the same problem. Interestingly, the <use-permissions READ_MEDIA_*> tags are not present in the app bundle's AndroidManifest.xml file. Maybe this is the same problem as with Apple, that the static code analysis of the play console triggers a false positive?
@MBulli hi, I have the same issue, were you able to find a solution?
@rdonoso Nope
@AlexMichels @kmoreau @rdonoso @MBulli
I faced the same issue but after reviewing all the permission declared using merge menifest option in android studio.
I have found this permissions are declared in open_filex package so have submitted the required declaration in google playstore and it's now accepted from them.
In case someone else is in the same situation - when permissions are not really required, for example when min android sdk is >= 33, it is possible to explicitly remove permissions this way:
<!-- Remove unnecessary media permissions -->
<uses-permission
android:name="android.permission.READ_MEDIA_IMAGES"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_MEDIA_VIDEO"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_MEDIA_AUDIO"
tools:node="remove" />
The above code will remove any permissions from dependencies merged to project's manifest during the build process.
@AlexMichels @kmoreau @rdonoso @MBulli I faced the same issue but after reviewing all the permission declared using merge menifest option in android studio. I have found this permissions are declared in open_filex package so have submitted the required declaration in google playstore and it's now accepted from them.
Hi @nayan-dabhi , can you explain more about the required declaration?
Guys, any update on this issue ?
following
In my case, I did not actually need the permission at all as the image_picker does not need permission.
@AlexMichels @kmoreau @rdonoso @MBulli I faced the same issue but after reviewing all the permission declared using merge menifest option in android studio. I have found this permissions are declared in open_filex package so have submitted the required declaration in google playstore and it's now accepted from them.
Can you explain with what you told google in the declaration form ? I am having the same issue and the permissions are in the open_filex package like yours. Please assist
u can try to replace open_filex by open_file , it worked for me
u can try to replace open_filex by open_file , it worked for me
this worked
I have replaced openFilex with OpenFile still getting same issue
Guys,
After using image_picker it follows Google Image and Video Permissions Policy and uses Android Photo Picker and used Scoped Storage So no need to grant any photos/videos permissions
Following
After struggling with this for a while, I finally understood the situation. Your app should fall into one of the following two cases:
case A:
✅ Your app no longer needs gallery-access permission to let users pick an image from the gallery. You should not check permissions at all. You also don’t need any UI that guides the user to the device settings page. To pass review, remove all UX and logic related to these permissions from your app. please call image_picker, file_picker directly.
⚠️ You may need the following entries in your AndroidManifest to ignore the READ_MEDIA_* permissions, but I’m not sure whether this behavior is intended by the package itself.
<!-- ignore READ_MEDIA_* -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" tools:node="remove" />
case B:
✅ Your app requires programmatic access to the gallery silently, and it needs to read images in the background or outside of user-initiated pick actions. This mainly applies to only customized album/gallery apps. However, Google reviewers may misunderstand this and reject your app. In this case, the problem is not your code or this package — you need to resolve it through communication in the Google Play Console. You must keep permission_handler and the READ_MEDIA_* permissions.
<!-- needs READ_MEDIA_* -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
⚠️
Note that all of the above applies only to Android 13 and later.
For Android versions below 13 and for iOS, permission_handler is still required, and the READ_MEDIA_* permissions are not relevant. You need to check the OS and version and branch your logic accordingly.
Another alternative that does not require to switch to imagePicker
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" android:maxSdkVersion="32"/>
if (Platform.isAndroid) {
final info = await DeviceInfoPlugin().androidInfo;
if (info.version.sdkInt > 32) {
// do not check for permission
} else {
await requestStoragePermissions();
}
}
More info on storage permission set-up in the manifest are documented here : https://github.com/miguelpruivo/flutter_file_picker/issues/1461

