我正在尝试在我的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)
}
}
我无法理解为什么这不起作用,因为它来自官方文档。
答案 0 :(得分:4)
简而言之:您应该导入react-native
模块的单个成员。这将是这样的:
import { PermissionsAndroid } from 'react-native';
导致问题的原因是import
语法。在您的示例中,您将整个react-native
模块导入模块中的PermissionAndroid
变量。但是从我的代码行看,你只需要整个包中的一个成员。
至于我,在现实世界中尝试不同的ES6导入语法并习惯它们是一个好主意。