我正在编写一个相机应用。因此,当用户进入相机页面时,他们可以选择是否授予相机权限。我将他们的决定保存在变量 const [hasPermission, setHasPermission] = useState(null);
我当前的使用效果函数中:
useEffect(() => {
(async () => {
const { status } = await Camera.requestPermissionsAsync();
const audioPermissions = await Audio.requestPermissionsAsync();
if (
cameraPermissions.status === "granted" &&
audioPermissions.status === "granted"
) {
setHasPermission(true);
}
})();
}, []);
当用户第一次运行应用程序时,这目前可以正常工作 - 他们授予权限,就是这样 - 我可以使用相机!
但是..... 如果他们不授予许可怎么办。他们决定不使用摄像头,他们拒绝访问,后来又改变主意。例如 5 分钟后,他们再次打开“摄像头”页面并想要授予权限。这是我的问题。在当前情况下useEffect
,即当您最初加载页面时,使用摄像头的请求只会显示一次。如果用户还没有授予权限,我如何强制它再次弹出?
我尝试了以下方法:
useEffect(() => {
(async () => {
const { status } = await Camera.requestPermissionsAsync();
const audioPermissions = await Audio.requestPermissionsAsync();
if (
cameraPermissions.status === "granted" &&
audioPermissions.status === "granted"
) {
setHasPermission(true);
}
})();
}, [hasPermission === null]);
但是没有用。有什么建议吗?
答案 0 :(得分:0)
您只需要传递重要的变量。无需检查任何其他内容。
}, [hasPermission]);