react-native 询问 Android 运行时权限

react-native asking Android runtime permission

我正在尝试在我的 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 导入语法并习惯它们真的是个好主意。