android - 在 React Native 中获取设备 ID?

标签 android ios react-native deviceid

如何在 React Native 中获取设备 ID。我使用的是 create react native 而不是 android studio。我对此很陌生。

import DeviceInfo from 'react-native-device-info';

constructor(props) {
 super(props);
   this.state = { id: '' }
   this.onNavigateTo = this.onNavigateTo.bind(this);   
}
componentDidMount() {
   this.setState({id: DeviceInfo.getUniqueID()}, () =>      
   alert(this.state.id));
}
render() {
  return (
       <Text>{this.state.id}</Text>
  );
}

错误:undefined 不是一个对象(评估'RNDevice.uniqueId')

注意:- 我没有使用 run-android 或 run-ios

我正在使用 Create-react-native app 和 yarn start。输出将通过 Expo 应用程序在设备上

最佳答案

您可以使用 react-native CLI 创建一个项目,而不是 expo。

使用命令创建一个新项目:

react-native init Myproject

cd Myproject

使用以下命令运行项目:

react-native run-android

然后你可以使用 react-native-device-info 包。

我尝试了以下版本,它对我有用。

  "react": "16.0.0",
  "react-native": "0.50.4",
  "react-native-device-info": "^0.12.1",

我是用命令安装的:

npm install --save react-native-device-info

然后我用命令链接它:

react-native link react-native-device-info

如果您在链接包时遇到任何问题,那么您可以进行手动链接,或者您可以交叉检查包是否成功链接。

  1. 在 android/app/build.gradle 中:
 dependencies {
        ...
        compile "com.facebook.react:react-native:+"  // From node_modules
    +   compile project(':react-native-device-info')
    }
  1. 在 android/settings.gradle 中:

...

include ':app'

include ':react-native-device-info'

project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')

  1. 在 MainApplication.java 中:
+ import com.learnium.RNDeviceInfo.RNDeviceInfo;

  public class MainApplication extends Application implements ReactApplication {
    //......

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
+         new RNDeviceInfo(),
          new MainReactPackage()
      );
    }

    ......
  }

权限

向您的 AndroidManifest.xml 添加适当的可选权限:

...
<uses-permission android:name="android.permission.BLUETOOTH"/>         <!-- for Device Name -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  <!-- for Phone Number -->

示例

var DeviceInfo = require('react-native-device-info');
// or import DeviceInfo from 'react-native-device-info';

var deviceId = DeviceInfo.getUniqueID();

你可以使用上面的deviceId。

关于android - 在 React Native 中获取设备 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452529/

相关文章:

android - 如何使用Java卡中的公钥在Android应用程序中生成证书签名请求

ios - 当针对 iOS 进行 Xcode 调试时,GStreamer 出现不必要的启动延迟和单元测试崩溃

javascript - 直接使用数组或将其分配给变量并使用它哪个更好?

variables - 有没有一种方法可以将颜色十六进制代码存储在类似于 React-Native 中的 SASS 的变量中?

安卓 : Display an EditText in a menu

Android:无法在同一手机上执行通过Linux Deploy编译的文件

java - 使用 SQLite 数据库时我的 Activity 无法打开

ios - 用于与 RestKit 0.20.1 进行 CoreData 映射的网络连接委托(delegate)?

iOS Core Graphics 如何删除绘图

reactjs - useEffect取数据后一直输入