您可以使用 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
如果您在链接软件包时遇到任何问题,那么您可以进行手动链接,或者您可以交叉检查软件包是否成功链接。
- 在 android/app/build.gradle 中:
dependencies {
...
compile "com.facebook.react:react-native:+" // From node_modules
+ compile project(':react-native-device-info')
}
- 在 android/settings.gradle 中:
...
包括':应用程序'
包括 ':react-native-device-info'
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
- 在 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。