【问题标题】:Request Runtime permission React Native请求运行时权限 React Native
【发布时间】:2019-01-02 09:14:12
【问题描述】:

我正在尝试在 ReactNative 中请求运行时权限,但我总是在设备屏幕中收到“权限为空”错误。

代码如下:

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 manifest 上。我的 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();
  }

【问题讨论】:

  • 等待错误

标签: android react-native permissions


【解决方案1】:

request() 方法返回一个承诺。您需要async/await.then()/.catch(),然后检查PermissionsAndroid.RESULTS.GRANTED。这可能会解决您的问题或帮助您调试。

【讨论】:

  • 成功了!感谢快速响应。我会更新问题以帮助其他人。
  • 太棒了!很高兴我能帮助你!如果你能接受这个答案,那也对我有帮助;)
【解决方案2】:

虽然您确实需要像@Daniel 所说的那样处理承诺,但错误的原因是您的权限请求不正确,但应该是:

PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多