在 React Native 中获取 IMEI 号码

Posted

技术标签:

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

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

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

    在我的代码中;
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】:

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

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 的对象)。

以上是关于在 React Native 中获取 IMEI 号码的主要内容,如果未能解决你的问题,请参考以下文章

Android 获取手机的厂商型号Android系统版本号IMEI当前系统语言等工具类

是否可以在 react native 中获取 apk 包名称和版本代码?

react native 热更新

如何获取IMEI编号|离子| Android

Android 7.0获取IMSI、IMEI号需要权限吗,需要的话请大神下面告知方法,谢谢

获取双卡安卓移动设备中两个 sim 卡插槽的 IMEI