React-Native 请求 Android 运行时权限

Ant*_*ray 3 javascript android android-permissions react-native

我正在尝试在我的 React Native 应用程序中请求 Android 权限。我按照此处的官方文档进行操作,并收到此运行时错误(来自react-native log-android命令):

W ReactNativeJS: undefined is not an object (evaluating 'PermissionsAndroid.PERMISSIONS.CAMERA')
Run Code Online (Sandbox Code Playgroud)

这是我实际拥有的代码:

我的导入(由 WebStorm 生成):

import * as PermissionsAndroid from "react-native";
Run Code Online (Sandbox Code Playgroud)

实际请求许可的代码:

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这不起作用,因为它来自官方文档。

Rom*_*pov 5

简而言之:您应该导入react-native模块的单个成员。这看起来像这样:

import { PermissionsAndroid } from 'react-native';
Run Code Online (Sandbox Code Playgroud)

导致问题的原因是你的import语法。在您的示例中,您将整个react-native模块作为PermissionAndroid变量导入到模块中。但正如您从我的代码行中看到的那样,您只需要整个包中的一个成员。

对于我来说,在现实世界中尝试不同的 ES6 导入语法并习惯它们确实是个好主意。