react-native询问Android运行时权限

时间:2017-08-08 17:20:48

标签: javascript android react-native android-permissions react-native-android

我正在尝试在我的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)
    }
}

我无法理解为什么这不起作用,因为它来自官方文档。

1 个答案:

答案 0 :(得分:4)

简而言之:您应该导入react-native模块的单个成员。这将是这样的:

import { PermissionsAndroid } from 'react-native';

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

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