ExpoPermission 인터페이스를 사용하는 동안 오류가 발생했습니다. 방금 React 및 Expo를 통해 Android 개발에 대해 배우기 시작했고 가이드를 따라 새 프로젝트를 만들었습니다.
npm install -g create-react-native-app
create-react-native-app my-app
cd my-app/
npm start
모든 것이 작동하고 예제가 내 전화기에서 실행 된 다음 엑스포 문서에서 예제를 호출하는 간단한 버튼을 추가했지만 누르면이 메시지가 표시됩니다.
[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>
그런 다음 코드를 추가했습니다.
function handlePressMe() {
request_storage_runtime_permission();
}
async function request_storage_runtime_permission() {
try {
const granted = await Permissions.askAsync(Permissions.WRITE_EXTERNAL_STORAGE);
print(granted)
Alert.alert("Storage Permission received.");
/*if (granted === PermissionsAndroid.RESULTS.GRANTED) {
Alert.alert("Storage Permission Granted.");
}
else {
Alert.alert("Storage Permission Not Granted");
}*/
} catch (err) {
console.warn(err)
}
}
과 import * as Permissions from '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는 권한 이름을 지정하는 고유 한 방법을 사용하므로 WRITE_EXTERNAL_STORAGE를 요청하려는 경우 RN에서이 권한을 정확하게 호출하면 Expo에서 쓰기 및 읽기 권한을 모두 포함하는 CAMERA_ROLL 권한을 대신 요청해야합니다. 오류 메시지는 null 만 표시하기 때문에 약간 직관적입니다. 요청하는 권한 (Permissions.WRITE_EXTERNAL_STORAGE)이 null을 반환하기 때문에 매개 변수로 null을 전송한다고 말하려고합니다. 따라서 해결책은 다음과 같이 변경하는 것입니다.
const granted = await Permissions.askAsync(Permissions.CAMERA_ROLL);
이것이 미래의 누군가에게 도움이되기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다