【问题标题】:Get IMEI number in React Native在 React Native 中获取 IMEI 号码
【发布时间】:2022-01-19 11:02:27
【问题描述】:

我需要 IMEI 以在 React Native 应用程序中进行验证。使用 reactive-native-imei 包,这里是该包的链接:(https://github.com/SimenCodes/react-native-imei)。

在我的代码中,我收到以下错误:-

  1. 在我的代码中;
const GetImei = () => {
    const IMEI = require('react-native-imei');
    IMEI.getImei().then(imeiList => {
        console.log(imeiList); // prints ["AABBBBBBCCCCCCD"]
    });

在我的代码const IMEI = require('...react-native-imei'); 的第二行中,它给了我 react-native-imei 的 'r' 下面的 3 个点,当我将鼠标悬停在它上面时,它说“找不到模块的声明文件-'react -native-imei'”,虽然我已经安装了包并链接了它,但我也检查了在节点模块中包仍然存在我也检查了 settings.gradle 文件包包含在那里所以可能是什么原因这个错误?请帮帮我。

  1. 我遇到的其他一些错误如下图所示:

【问题讨论】:

    标签: javascript reactjs react-native imei


    【解决方案1】:

    检查这个问题。它是在图书馆里长大的。

    https://github.com/SimenCodes/react-native-imei/issues/22

    如果您处于非常特殊的情况,您也可以在最新的 Android 版本中使用这个库。 “只是”遵循 Android 的规则来获得额外的权限。从 2019 年开始的讨论中有一些提示,但你应该知道,从那时起,权限已重命名为 READ_PRECISE_PHONE_STATE。

    还可以查看 android 文档。

    https://developer.android.com/about/versions/10/privacy/changes?authuser=1#non-resettable-device-ids

    【讨论】:

    • 所以这意味着我们现在无法在 react-native 中访问 IMEI 号码?是这么说的吗?
    • 没有。一旦我们拥有 READ_PRIVILEGED_PHONE_STATE 权限,我们将获得 IMEI 号码。这已经在上面的文档中解释过了。
    • 因此,如果我将 更改为 会是好吗?
    • 试一试。将权限放在androidmanifest.xml文件中,通过PermissionsAndroid请求运行时权限。
    【解决方案2】:

    我实际上并不知道究竟是什么导致了您的应用程序中的错误,但我已经在您给定的库上构建了一个演示库,它工作正常。这是我的代码:

    import React from 'react'
    import { StyleSheet,TouchableOpacity ,Text,View} from 'react-native'
    
    export default class Demo extends React.Component {
    
      constructor () {
        super()
        this.state = {
          deviceIMEI: '',
        }
      }
    
      getIMEI = () => {
        const IMEI = require('react-native-imei')
        this.setState({
          deviceIMEI: IMEI.getImei(),
        })
      }
    
      render () {
        return (
          <View style={styles.container}>
            <Text>{this.state.deviceIMEI}</Text>
            <TouchableOpacity onPress={this.getIMEI}>
              <Text>Get Current Device IMEI</Text>
            </TouchableOpacity>
          </View>
        )
      }
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'flex-start',
      },
    })
    

    【讨论】:

    • “在该代码的第二行“const IMEI = require('...react-native-imei');”怎么样?它给了我反应的 'r' 下面的 3 个点-native-imei,当我将鼠标悬停在它上面时,它说“找不到模块的声明文件-'react-native-imei'”,虽然我已经安装了包并链接了它,但我也检查了节点-模块包仍然存在我已经检查了 settings.gradle 文件包包含在那里所以这个错误的原因可能是什么?”
    • 我正在运行你的代码,现在它给了我一个错误:对象作为 React 子级无效(找到:带有键 {_U、_V、_W、_X} 的对象)。
    猜你喜欢
    • 2012-02-03
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2014-10-20
    相关资源
    最近更新 更多