expo-image-picker Android 11, app rejected on Play Store for using MANAGE_EXTERNAL_STORAGE permission

Please provide the following:

  1. SDK Version: 40
  2. Platforms(Android/iOS/web/all): Android
  3. Add the appropriate “Tag” based on what Expo library you have a question on.

I am fighting with Google against their new storage permissions policy. They refuse to reply to my appeal requests on the Play Store (for more 2 weeks now) to discuss what the actual issue is.
So I am now on my own, figuring out if I am at fault and for what actual reason.

My app is getting rejected because, apparently, I am using the MANAGE_EXTERNAL_STORAGE permission. However, I am not using such permission, and it is not declared in the app manifest.
After the first rejection I have also tried adding the following in android/app/src/main/AndroidManifest.xml to make sure that such permission never ends up in the final build:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:node="remove" />

And as I have verified on the uploaded appbundle on the Play Store, this permission does not appear in the list of required permissions.
Still, my app is getting rejected for this permission, explicitly:

I have analized all the packages used in my app, all the permissions they require, and I have determined that the only possible issues may come from the expo-image-picker package. I am using Expo SDK 40, in bare workflow.
The additional instructions for Android say that the lib requires the READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE permissions, even for the latest Expo SDK 43.
No other package in my app requires any storage related permissions.

I am not using the requestLegacyStorage option since Google’s policy requires builds to target at least Android SDK 30 (Android 11), where this option is ignored (as I understood it, it was accepted for apps targetting up to Android SDK 29, but not further - did I get this wrong ?).

What I don’t know is whether the READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE permissions are actually the same as MANAGE_EXTERNAL_STORAGE.

Can someone knowledgeable with Android permissions help me figure out this issue?
Do the permissions above count for the app rejection?

Hi!
I’m sorry for your situation and I cannot answer your question, but maybe provide some more context.

We are on the managed flow, we just released our app with Expo SDK 42 to the Google PlayStore with the following permissions (in managed flow we defined them in the app.config):

 permissions: [
      'CAMERA',
      'READ_EXTERNAL_STORAGE',
      'WRITE_EXTERNAL_STORAGE',
      'VIBRATE',
      'android.permission.CAMERA',
      'android.permission.RECORD_AUDIO',
      'android.permission.READ_EXTERNAL_STORAGE',
      'android.permission.WRITE_EXTERNAL_STORAGE',
      'android.permission.INTERNET'
    ],

We use expo config --type introspect to see what permissions we have. But I’m not sure if that makes sense in a bare project, where you have your AndroidManifest.

We also use the expo-image-picker package.

One thing: Make sure all the different versions of the app that you have uploaded (e.g. internal testing etc.) have the expected permissions.