javascript - 需要时未读取二维码
问题描述
我正在使用 react-native-qrcode-scanner 库来扫描条形码并返回其结果。但是它不读取条形码并且不返回任何信息
import React, { Component } from 'react';
import { View, Text, Dimensions, StyleSheet, TouchableOpacity } from 'react-native';
import QRCodeScanner from "react-native-qrcode-scanner";
export default class QRcodeScan extends Component {
state = {
id: ''
};
onSuccess = async (e) => {
console.log(e)
await this.setState({ id: e.data });
console.log(this.state.id)
};
render () {
return (
<QRCodeScanner
onRead={this.onSuccess}
topContent={
<Text style={styles.centerText}>
Go to <Text style={styles.textBold}>wikipedia.org/wiki/QR_code</Text> on your computer and scan the QR code.
</Text>
}
bottomContent={
<TouchableOpacity style={styles.buttonTouchable}>
<Text style={styles.buttonText}>OK. Got it!</Text>
</TouchableOpacity>
}
/>
);
}
}
const styles = StyleSheet.create({
centerText: {
flex: 1,
fontSize: 18,
padding: 32,
color: '#777',
},
textBold: {
fontWeight: '500',
color: '#000',
},
buttonText: {
fontSize: 21,
color: 'rgb(0,122,255)',
},
buttonTouchable: {
padding: 16,
},
});
- react-native-qrcode-scanner": "^1.3.1"
- react-native-permissions": "^2.0.3"
- 反应原生相机”:“^3.11.1”
- 反应原生”:“^0.60.4”
解决方案
如果您安装了react-native-camera
模块,则可以使用已安装的模块来修复它。
- 您必须将以下权限添加到
android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.CAMERA" />
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.您还需要设置维度策略android/app/build.gradle
defaultConfig {
applicationId "com.example"
+ missingDimensionStrategy 'react-native-camera', 'general'
3.RNCamera
从App.js
文件中导入。
import { RNCamera } from 'react-native-camera';
4.使用组件扫描二维onBarCodeRead
码。
constructor(props) {
super(props);
this.state = {
camera: {
type: RNCamera.Constants.Type.back,
}
};
}
onBarCodeRead(scan) {
console.warn(scan.type);
console.warn(scan.data);
}
render() {
return (
<View style={styles.container}>
<RNCamera
ref={ref => {
this.camera = ref;
}}
defaultTouchToFocus
mirrorImage={false}
onBarCodeRead={this.onBarCodeRead.bind(this)}
type={this.state.camera.type}
/>
</View>
);
}
}
推荐阅读
- regex - 正则表达式:阿拉伯语单词边界
- google-apps-script - Google Apps 脚本需要不受限制的范围
- python - 如何在 Python 中使用 QTextBrowser 而不是控制台?
- python - 如何像使用 Python 一样使用 SQL,通过复制行同时更改该行中的一个值,其中该值来自不同的列?
- python - Django:“详细信息”:“未找到。” 在网页上找不到 HTTP 404
- android - Flutter:前台通知在 Firebase 消息传递中不起作用
- linux-kernel - USB核心是否会负责释放urb->hcpriv,即使它不是自己分配的?
- javascript - 下面这段代码的初始化函数是什么?
- unity3d - 统一webgl中带有数组参数的SendMessage
- python - 接受文件并将参数从命令行传递给函数没有输出