androidflutterpermissionsgoogle-playgoogle-play-console

Google Play: App rejected for READ_MEDIA_IMAGES / READ_MEDIA_VIDEO usage but not declared in code or manifest


Photo and Video Permissions Policy: Use of permissions is not directly related to the core purpose of your app.

Status

We found that your app does not comply with how READ_MEDIA_IMAGES / READ_MEDIA_VIDEO permissions may be used.

Your app only requires one-time or infrequent access to media files on the device. Only apps whose core use case requires persistent access to photos and videos stored in shared storage are allowed to use these permissions.

✅ I checked my project, and I do not have these permissions in my AndroidManifest.xml.

✅ My pubspec.yaml dependencies are:

dependencies:
  flutter:
    sdk: flutter
    
  flutter_localizations:
    sdk: flutter
  
  ## Firebase
  firebase_core: ^3.8.1
  firebase_crashlytics: ^4.2.0
  firebase_remote_config: ^5.2.0
  firebase_analytics: ^11.3.6
  
  ## File Mangement Video/Image/etc...
  video_player: ^2.7.1
  chewie: ^1.7.1
  youtube_player_flutter: ^9.1.1
  open_filex: ^4.5.0
  file_picker: ^10.2.0
  image_cropper: ^9.1.0
  image_picker: ^1.1.2
  flutter_svg: ^2.0.16

  ## Web and Html
  webview_flutter: ^4.10.0
  #html_editor_enhanced: ^2.7.0
  html_editor_enhanced:
    path : ../flutter_test/html-editor-enhanced
  
  flutter_html: ^3.0.0-alpha.6

  ## Websockect and SEE
  stomp_dart_client: ^2.1.0
  flutter_client_sse: ^2.0.3
  
  ## Notif
  flutter_local_notifications: ^19.2.1

  ## charts / Graph
  syncfusion_flutter_charts: ^30.1.37
  syncfusion_flutter_calendar: ^30.1.37
  syncfusion_flutter_maps: ^30.1.37
  graphview:  ^1.2.0
   # path: '../test_flutter/graphview'
  
  ## Icons
  font_awesome_flutter: ^10.8.0

  ## Phone contact
  flutter_contacts: ^1.1.9

  ## router
  go_router: ^15.1.2
  
  dartz: ^0.10.1
  connectivity_plus: ^6.1.1
  uuid: ^4.2.2
  flutter_cache_manager: ^3.4.1
  flutter_portal: ^1.1.4
  any_link_preview: ^3.0.2

  auto_size_text: ^3.0.0
  easy_date_timeline: ^2.0.6
  states_rebuilder: ^6.4.0
  device_info_plus: ^11.2.0
  shimmer: ^3.0.0
  flutter_spinkit: ^5.2.1
  overlay_support: ^2.1.0
  smooth_page_indicator: ^1.2.0
  
  fluttertoast: ^8.2.8
  shared_preferences: ^2.3.3 
  url_launcher: ^6.3.1
  intl: any
  path_provider: ^2.1.5

  get_it: ^8.0.2
  dio: ^5.7.0
  flutter_bloc: ^9.0.0
  equatable: ^2.0.7

  flutter_typeahead: ^5.2.0

  timeline_tile: ^2.0.0
  two_dimensional_scrollables: ^0.3.3
  data_table_2: ^2.5.18
  speech_to_text: ^7.0.0
  avatar_glow: ^3.0.1
  math_expressions: ^3.0.0




dev_dependencies:
  flutter_test:
    sdk: flutter
  lints: ^6.0.0
  flutter_lints: ^6.0.0
  flutter_launcher_icons: ^0.14.3
  build_runner: ^2.4.13
  go_router_builder: ^3.0.0
  flutter_driver:
    sdk: flutter

I do not require persistent access to user photos or videos on device storage.

Why is Google Play rejecting my app for READ_MEDIA_IMAGES / READ_MEDIA_VIDEO if I never declared them?

Does any of these plugins implicitly request these permissions at install time?

Should I migrate my image_picker usage to Android Photo Picker API to avoid this issue?

Is there a way to check final built APK/Bundle for hidden permission requests before submission?

✅ Reviewed AndroidManifest.xml – no READ_MEDIA_IMAGES or READ_MEDIA_VIDEO.
✅ Checked Google Play photo and video permissions policy.
✅ Read plugin docs but no clear mention of these permissions being automatically declared.


Solution

  • Even if your app doesn't use these permissions directly, they might be required by other libraries (dependencies) used in your Flutter project

    In Your AndroidManifest.xml (typically in android/app/src/main/AndroidManifest.xml) file add 👇🏻

    
    <!-- Added by open_filex -->
    <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" />