android - 使用 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
}
任何帮助,将不胜感激。
解决方案
因此,经过进一步挖掘,https ://docs.expo.io/workflow/configuration/?redirected ,解决此问题的方法是添加android.permissions = []
到我的 app.json 中:
"android": {
"package": "<package name>",
"versionCode": 1,
"permissions": []}
推荐阅读
- mysql - Navicat Premium SQL 查询错误:“没有这样的功能:密码”
- c++ - 重载 + 和 << 运算符的有理数 (p/q) 类
- swiftui - SwiftUI FlowLayout-like View 溢出 VStack 中的其他视图
- angular - 使用 Angular Reactive Forms 进行跨字段验证时,如何对所有表单控件强制执行所需的验证
- agora.io - 我想在我的应用程序中构建请求发言功能,类似于 twitter 空间有人可以帮助我吗?
- wordpress - 在 Gutenberg 编辑器 wordpress 中添加自定义弹出框
- list - 如何在 python 中重新排序列表以与预定义的顺序相对应
- laravel - Laravel:不能显示多个表格
- azure-blob-storage - 确定 azure blob 存储路径是前缀还是指向 blob 项
- python - 从 Django 中的完整性错误中提取详细信息