首页 > 解决方案 > 使用 React Native 和 Expo 构建的 Android 应用程序仍然要求应用程序权限

问题描述

我使用 React Native 构建了一个 Android 应用程序,并使用 expo 构建了 apk 文件expo build:android。但是,当我在模拟器上运行该应用程序时,即使从 AndroidManifest.xml 中删除了所有权限,该应用程序仍会要求提供 Physical Activity 权限:

android/app/src/main/AndroidManifest.xml

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

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

<!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->

<!-- These require runtime permissions on M -->
<!-- END OPTIONAL PERMISSIONS -->

<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">

  <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="YOUR-APP-URL-HERE" />
  <meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="YOUR-APP-SDK-VERSION-HERE" />

  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    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>

权限截图

我尝试添加tools:node="remove"标签而不是删除使用权限行,但这没有效果。

我的应用不需要任何权限,这个问题阻止我上传到 Play 商店。我在其他帖子中读到,我正在使用的库可能正在请求权限,但我不相信我正在使用的任何 npm 库都需要任何此类权限:

包.json

{
  "main": "index.js",
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "web": "expo start --web",
    "start": "react-native start",
    "test": "jest"
  },
  "dependencies": {
    "av": "^0.4.9",
    "expo": "~37.0.3",
    "expo-av": "^8.1.0",
    "expo-updates": "~0.1.0",
    "react": "~16.9.0",
    "react-dom": "~16.9.0",
    "react-native": "~0.61.5",
    "react-native-elements": "^2.0.0",
    "react-native-gesture-handler": "~1.6.0",
    "react-native-modal": "^11.5.6",
    "react-native-popup-dialog": "^0.18.3",
    "react-native-reanimated": "~1.7.0",
    "react-native-responsive-fontsize": "^0.4.3",
    "react-native-responsive-screen": "^1.4.1",
    "react-native-screens": "~2.2.0",
    "react-native-unimodules": "~0.9.0",
    "react-native-web": "~0.11.7"
  },
  "devDependencies": {
    "@babel/core": "~7.9.0",
    "babel-jest": "~25.2.6",
    "jest": "~25.2.6",
    "react-test-renderer": "~16.9.0"
  },
  "jest": {
    "preset": "react-native"
  },
  "private": true
}

任何帮助,将不胜感激。

标签: androidreact-nativeexpo

解决方案


因此,经过进一步挖掘,https ://docs.expo.io/workflow/configuration/?redirected ,解决此问题的方法是添加android.permissions = []到我的 app.json 中:

 "android": {
 "package": "<package name>",
 "versionCode": 1,
 "permissions": []}

推荐阅读