当前位置: 首页 > 知识库问答 >
问题:

React Native-Play商店警告“从5月5日开始,您必须让我们知道为什么您的应用需要广泛的存储访问权限”

丌官星渊
2023-03-14

我有一个react native应用程序,它在play store上已经有一段时间了,最近我收到了来自play store的重要通知,声明如果我不解决这个问题,我的应用程序将从play store中删除。

有人能告诉我这是什么,怎么修吗?

这是来自Play商店的完整消息

我们检测到你的应用在一个或多个应用捆绑包或apk的清单文件中包含requestLegacyExternalStorage标志。

在运行 Android 11 的设备上拥有应用的开发者必须使用“作用域内存储”,以便用户更好地控制其设备存储。要在 5 月 5 日之后的 Android 11 或更高版本上发布您的应用,您必须执行以下操作之一:

  • 更新你的应用以使用更隐私友好的最佳做法,例如存储访问框架或媒体应用商店 API
  • 更新您的应用以在清单文件中声明“所有文件访问权限(MANAGE_EXTERNAL_STORAGE)”权限,并从 5 月 5 日起在 Play 管理中心内完成“所有文件访问权限”声明
  • 从应用中完全删除“所有文件”访问权限。

对于面向 Android 11 的应用,请求“异常存储”标志将被忽略。必须使用“所有文件”访问权限才能保留广泛的访问权限。

如果应用请求访问“所有文件”访问权限,但未经允许使用,系统就会从 Google Play 中移除,并且您也无法发布更新。

我的包.json

{
    "@react-native-async-storage/async-storage": "^1.13.4",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/bottom-tabs": "^5.11.8",
    "@react-navigation/drawer": "^5.12.3",
    "@react-navigation/material-bottom-tabs": "^5.3.14",
    "@react-navigation/native": "^5.9.2",
    "@react-navigation/stack": "^5.14.2",
    "axios": "^0.21.1",
    "fuse.js": "^6.4.6",
    "react": "16.13.1",
    "react-native": "0.63.4",
    "react-native-device-info": "^8.0.1",
    "react-native-gesture-handler": "^1.10.0",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-paper": "^4.7.1",
    "react-native-reanimated": "^1.13.2",
    "react-native-safe-area-context": "^3.1.9",
    "react-native-screens": "^2.17.1",
    "react-native-svg": "^12.1.0",
    "react-native-vector-icons": "^8.0.0"
}

和manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.elevel.fromto">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
      android:usesCleartextTraffic="true">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

同样在App bundle Explorer下的Play Console中,我发现我的应用正在使用以下权限:

  • android.permission.INTERNET
  • com.google.android.c2dm.permission.RECEIVE
  • com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

共有3个答案

薛宜
2023-03-14

不是修复,但Reddit上有一个您可能有兴趣阅读的线程。有报告称,即使有人收到此消息,即使他们未启用请求异常外部存储标志。

汪弘毅
2023-03-14

我的理解是,即使针对Android 11,我们也应该能够使用该选项解决问题:

  • 更新您的应用以在清单文件中声明“所有文件访问权限(MANAGE_EXTERNAL_STORAGE)”权限,并从 5 月 5 日起在 Play 管理中心内完成“所有文件访问权限”声明

我认为这是解决Android11将忽略android:requestLegacyExternalStorage=“true”这一事实的方法。但我不知道如何在Play Console中声明“所有文件”访问权限。应该有一些表单,您应该在其中指定应用程序需要此权限的原因。有人能看到这个表格在哪里吗?

戈建白
2023-03-14

我发现,如果我们针对的是Android API 29,我们无需担心警告,只需在应用程序的清单文件中设置Request estLegacyExternalStorage=true

虽然我们必须在11月之前升级到Android API 30。

 类似资料: