如何在不启动系统对话框的情况下使用 Expo 在 React-Native 中静默检查相机权限?

How can I silently check camera permission in React-Native using Expo without launching the system dialog?

我正在使用 Expo 构建一个 React-Native 应用程序,我需要 check/ask 获得相机权限。然而,权限请求似乎总是会启动系统权限对话框。如何在不启动系统对话框的情况下静默检查权限?

我用来检查权限的代码如下:

const { status } = await Permissions.askAsync(Permissions.CAMERA);
if (status === 'granted') console.log('permission granted!';

我知道 Permissions.askAsync 会自动 return 如果 status===granted,但是我使用的是两步许可流程,用户首先点击一个按钮来询问以获得许可。但如果它已经被提前设置,我宁愿不显示按钮,而只是自动继续。我在 NPM 上看到了一些实现此功能的组件,但我认为它们与 Expo 不兼容。

您应该使用 'getAsync' 而不是 'askAsync':Expo.Permissions.getAsync(type)

const { status } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
if (status !== 'granted') {
   alert('Hey! You might want to enable notifications for my app, they are good.');
}

https://docs.expo.io/versions/latest/sdk/permissions