javascript - react-native 询问 Android 运行时权限

标签 javascript android android-permissions react-native

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

相关文章:

javascript - jQuery - 在 mouseenter 之后保持另一个元素打开

javascript - 即使状态为 200,WNS 推送通知也不起作用

javascript - 如何从 phonegap HTML 页面调用 Android 函数?

android - 如果我在 WRITE_EXTERNAL_STORAGE 权限中设置了 maxSdkVersion,为什么我的 map 应用程序会崩溃?

android - 管理外部存储与写入外部存储

Javascript列表对象无法添加JSON? Node.JS、Firebase

javascript - 是否可以通过模板内的 JS 访问发送到 handlebars 的数据?

java - Google Talk API 与 Android 应用的集成

android - 3d css 转换 (translateZ) 不能在 android 4.0.3 上运行?

android - 如何从 Necessitas Android 应用程序中删除所有默认权限?