Android 在模块上执行导出方法askAsync时发生异常:null
我在使用ExpoPermission接口时出错。我刚开始通过React和Expo了解Android开发,并按照指南创建了一个新项目Android 在模块上执行导出方法askAsync时发生异常:null,android,react-native,expo,Android,React Native,Expo,我在使用ExpoPermission接口时出错。我刚开始通过React和Expo了解Android开发,并按照指南创建了一个新项目 npm install -g create-react-native-app create-react-native-app my-app cd my-app/ npm start 一切正常,示例在我的手机上运行,然后我添加了一个简单的按钮,可以调用expo文档中的示例,但当我按下它时,它会启动此消息 [Error: Encountered an excep
npm install -g create-react-native-app
create-react-native-app my-app
cd my-app/
npm start
一切正常,示例在我的手机上运行,然后我添加了一个简单的按钮,可以调用expo文档中的示例,但当我按下它时,它会启动此消息
[Error: Encountered an exception while calling native method: Exception occurred while executing exported method askAsync on module ExpoPermissions: null]
我的代码很简单,只是添加到视图中
<TouchableOpacity onPress={handlePressMe} style={styles.helpLink}>
<Text style={styles.LinkBlue}>
Press me!
</Text>
</TouchableOpacity>
和import*作为来自“expo Permissions”的权限代码>
我已经阅读了Expo的文档,发现很多安装都是为了这个库,但是没有任何改变,以防万一,我添加了这两个东西
sudo expo install expo-permissions
sudo yarn add react-native-unimodules
还要注意的是,我向app.json添加了权限,并尝试使用getAsync查看是否已授予该权限,但启动了相同的错误,这是我的app.json:
{
"expo": {
"name": "Test App",
"slug": "testApp",
"privacy": "public",
"sdkVersion": "35.0.0",
"platforms": [
"android",
"web"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"android": {
"permissions": [
"WRITE_EXTERNAL_STORAGE"
]
}
}
}
尝试搜索更多信息,但我发现的唯一问题是未回答的主题。是否有人知道问题出在哪里,或者如何提示更多信息?它显示的唯一内容是null。在尝试直接使用React Native执行此操作后,我在这里发现了问题:
Expo使用自己的方式命名权限,因此,如果您想要请求写入外部存储,而在RN上,您将准确地调用此权限,而在Expo上,您需要请求相机滚动权限,其中包括写入和读取权限。这个错误消息没有什么直观性,因为它只标记为null,而试图说由于错误而将null作为参数发送
您正在请求的权限(Permissions.WRITE\u EXTERNAL\u STORAGE)返回null。因此,解决方案是将其更改为:
const granted = await Permissions.askAsync(Permissions.CAMERA_ROLL);
希望这对未来有帮助
const granted = await Permissions.askAsync(Permissions.CAMERA_ROLL);