我正在尝试在我的 React Native 应用程序中请求 Android 权限。我按照官方文档here我得到了这个运行时错误(来自 react-native log-android
命令):
W ReactNativeJS: undefined is not an object (evaluating 'PermissionsAndroid.PERMISSIONS.CAMERA')
这是我实际拥有的代码:
我的导入(由 WebStorm 生成):
import * as PermissionsAndroid from "react-native";
实际请求权限的代码:
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
'title': 'A title',
'message': 'A message'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
return true;
} else {
return false;
}
} catch (err) {
console.warn(err)
}
}
我不明白为什么这不起作用,因为它来自官方文档。
最佳答案
简而言之:您应该导入 react-native
模块的单个成员。这看起来像这样:
import { PermissionsAndroid } from 'react-native';
导致问题的原因是您的 import
语法。在您的示例中,您将整个 react-native
模块导入为模块中的 PermissionAndroid
变量。但是正如您从我的代码行中看到的那样,您只需要整个包中的一个成员。
对我来说,在现实世界中尝试不同的 ES6 导入语法并习惯它们真的是个好主意。
关于javascript - react-native 询问 Android 运行时权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574449/