获取相机的权限和同一组件中的位置似乎无法正常工作



问题:

我在那里创建了一个react原生应用程序。在同一个组件中,我访问设备位置和Camara。在构建独立应用程序后,它请求权限失败。但在我重新启动应用程序后,它运行良好。我不知道这是什么原因。

这就是我请求权限的方式。

import React, { Component } from "react";
import {
View,
Text,
StyleSheet,
TouchableOpacity,
Image,
TextInput,
ScrollView,
KeyboardAvoidingView,
Dimensions,
Button,
Animated,
Easing,
Alert,
Picker,
BackHandler,
ToastAndroid
} from "react-native";
import PageHeader from "../Shared/pageHeader/PageHeader";
import MapView, { PROVIDER_GOOGLE } from "react-native-maps";
import { offenceActions, fineActions } from "../../actions";
import { connect } from "react-redux";
import RenderOption from "./RenderOption";
import * as Permissions from "expo-permissions";
import spinner from "../../../assets/spinner.gif";
const MARGIN = 40;
import { BarCodeScanner } from "expo-barcode-scanner";
class Home extends Component {
constructor(props) {
super(props);
this.state = {
QrPress: false,
hasCameraPermission: null,
// lastScannedUrl: "0x4A014AbE1951E1DaD7c6cf4b629073EebdFeA3e1",
lastScannedUrl: "",
scanned: false,
focusedLocation: {
latitude: 6.9336686,
longitude: 79.8489527,
latitudeDelta: 0.0322,
longitudeDelta:
(Dimensions.get("window").width / Dimensions.get("window").height) *
0.0322
},
locationChosen: false,
placesList: [],
isFocused: false,
location: "",
fineId: "",
isDateTimePickerVisible: false,
fineId: "",
licenceNo: "",
vehicle: "",
vehicleNo: "",
driverDetails: "",
offenceId: "",
licenceNoError: "",
vehicleError: "",
vehicleNoError: "",
driverDetailsError: "",
offenceIdError: "",
isLoading: false,
locationError: "" 
};
this.randomIdGenerator = this.randomIdGenerator.bind(this);
this.buttonAnimated = new Animated.Value(0);
this.growAnimated = new Animated.Value(0);
this._onPress = this._onPress.bind(this);
this.clearForm = this.clearForm.bind(this)
}
componentDidMount() {
this.getPermissionsAsync(); 
this.props.getOffence();
this.randomIdGenerator();
navigator.geolocation.getCurrentPosition(
pos => {
const coordsEvent = {
nativeEvent: {
coordinate: {
latitude: pos.coords.latitude,
longitude: pos.coords.longitude
}
}
};
this.pickLocationHandler(coordsEvent);
},
err => {
console.log(err);
alert("Fetching the Position failed");
}
);
BackHandler.addEventListener("hardwareBackPress", this.handleBackButton);
}  

getPermissionsAsync = async () => {
const { status } = await Permissions.askAsync(Permissions.CAMERA);
this.setState({ hasCameraPermission: status === "granted" });
};

有人能帮我解决这个问题吗?。为了找到这个问题的解决办法,我做了很多努力。但我没能做到。

您应该检查权限,并在授予权限后执行任务。

getPermissionsAsync = async () => {
const { status } = await Permissions.askAsync(Permissions.CAMERA);
if(status === "granted"){
// use the camera or location service
}
};

因为许可可以改变,换句话说,它在今天是动态的。到保护应用程序成功运行,当你需要时,你必须首先检查它

最新更新