我试图在ReactNative中请求运行时权限,但是在设备屏幕上总是出现“ Permission is null”错误。
代码如下:
import React, {Component} from 'react';
import {Text, View, StyleSheet, TextInput, Button} from 'react-native';
import {PermissionsAndroid} from 'react-native';
export default class HomeScreen extends React.Component {
componentDidMount()
{
PermissionsAndroid.request(PermissionsAndroid.READ_PHONE_STATE)
}
render () {
return (
<View style={styles.container}>
<Text style={styles.paragraph}>Seja Bem vindo a BBTS!</Text>
<Text style={styles.paragraph}>
Matricula: {this.props.navigation.state.params.matricula}
</Text>
<Text style={styles.paragraph}>
Email: {this.props.navigation.state.params.email}
</Text>
<Text style={styles.paragraph}>
imei vem aqui
</Text>
</View>
);
}
}
我已经把它放在android清单上了。我的APi目标是26。
有任何想法吗?
解决方案:
async requestPermission() {
try {
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can read the phone state")
} else {
console.log("permission denied")
}
} catch (err) {
console.warn(err)
}
}
componentDidMount()
{
this.requestPermission();
}
答案 0 :(得分:1)
request()
方法返回一个Promise。您需要async/await
或.then()/.catch()
,然后选中PermissionsAndroid.RESULTS.GRANTED
。这可能会解决您的问题或帮助您进行调试。
答案 1 :(得分:0)
虽然您确实需要按@Daniel所述处理承诺,但错误的原因是您的权限请求不正确,但这应该是
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE)