Norse Power Metal

    react-native-device-info-lower-version-android-jszh
    TypeScript icon, indicating that this package has built-in type declarations

    0.26.6 • Public • Published

    react-native-device-info

    npm version

    Device Information for React Native.

    TOC

    Installation

    Using npm:

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

    or using yarn:

    yarn add react-native-device-info

    ⚠️ If you are on React Native > 0.47, you must use version 0.11.0 of this library or higher

    Linking

    Automatic

    react-native link react-native-device-info

    (or using rnpm for versions of React Native < 0.27)

    rnpm link react-native-device-info

    Manual

    iOS (via CocoaPods)

    Add the following line to your build targets in your Podfile

    pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'

    Then run pod install

    iOS (without CocoaPods)

    In XCode, in the project navigator:

    • Right click Libraries
    • Add Files to [your project's name]
    • Go to node_modules/react-native-device-info
    • Add the .xcodeproj file

    In XCode, in the project navigator, select your project.

    • Add the libRNDeviceInfo.a from the deviceinfo project to your project's Build Phases ➜ Link Binary With Libraries
    • Click .xcodeproj file you added before in the project navigator and go the Build Settings tab. Make sure All is toggled on (instead of Basic).
    • Look for Header Search Paths and make sure it contains both $(SRCROOT)/../react-native/React and $(SRCROOT)/../../React
    • Mark both as recursive (should be OK by default).

    Run your project (Cmd+R)

    (Thanks to @brysgo for writing the instructions)

    Android
    • optional in android/build.gradle:
    ...
      ext {
        // dependency versions
        googlePlayServicesVersion = "<Your play services version>" // default: "+"
        compileSdkVersion = "<Your compile SDK version>" // default: 23
        buildToolsVersion = "<Your build tools version>" // default: "25.0.2"
        targetSdkVersion = "<Your target SDK version>" // default: 22
      }
    ...
    • in android/app/build.gradle:
    dependencies {
        ...
        implementation "com.facebook.react:react-native:+"  // From node_modules
    +   implementation project(':react-native-device-info')
    }
    • in 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')

    With React Native 0.29+

    • in 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()
          );
        }
    
        ......
      }

    With older versions of React Native:

    • in MainActivity.java:
    + import com.learnium.RNDeviceInfo.RNDeviceInfo;
    
      public class MainActivity extends ReactActivity {
        ......
    
        @Override
        protected List<ReactPackage> getPackages() {
          return Arrays.<ReactPackage>asList(
    +       new RNDeviceInfo(),
            new MainReactPackage()
          );
        }
      }

    NOTE: If you faced with this error: Could not resolve all files for configuration ':react-native-device-info:debugCompileClasspath'., in build.gradle put google() in the first line (according to https://stackoverflow.com/a/50748249)

    • in android/build.gradle:
    allprojects {
        repositories {
    +       google()
            ...
        }
    }

    (Thanks to @chirag04 for writing the instructions)

    Windows
    • Open the solution in Visual Studio for your Windows apps
    • right click your in the Explorer and click Add > Existing Project...
    • Navigate to ./<app-name>/node_modules/react-native-device-info/windows/RNDeviceInfo and add RNDeviceInfo.csproj
    • this time right click on your React Native Windows app under your solutions directory and click Add > Reference...
    • check the RNDeviceInfo you just added and press ok
    • open up MainReactNativeHost.cs for your app and edit the file like so:
    + using RNDeviceInfo;
    ......
            protected override List<IReactPackage> Packages => new List<IReactPackage>
            {
                new MainReactPackage(),
    +           new RNDeviceInfoPackage(),
            };

    (Thanks to @josephan for writing the instructions)

    Usage

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

    API

    Method Return Type  iOS Android Windows Since
    getAPILevel() number 0.12.0
    getApplicationName() string 0.14.0
    getBatteryLevel() Promise<number> 0.18.0
    getBrand() string 0.9.3
    getBuildNumber() string ?
    getBundleId() string ?
    getCarrier() string 0.13.0
    getDeviceCountry() string 0.9.0
    getDeviceId() string 0.5.0
    getDeviceLocale() string 0.7.0
    getDeviceName() string ?
    getFirstInstallTime() number 0.12.0
    getFontScale() number 0.15.0
    getFreeDiskStorage() number 0.15.0
    getIPAddress() Promise<string> 0.12.0
    getInstallReferrer() string 0.19.0
    getInstanceID() string ?
    getLastUpdateTime() number 0.12.0
    getMACAddress() Promise<string> 0.12.0
    getManufacturer() string ?
    getMaxMemory() number 0.14.0
    getModel() string ?
    getPhoneNumber() string 0.12.0
    getReadableVersion() string ?
    getSerialNumber() string 0.12.0
    getSystemName() string ?
    getSystemVersion() string ?
    getTimezone() string ?
    getTotalDiskCapacity() number 0.15.0
    getTotalMemory() number 0.14.0
    getUniqueID() string ?
    getUserAgent() string 0.7.0
    getVersion() string ?
    is24Hour() boolean 0.13.0
    isAirPlaneMode() Promise<boolean> 0.25.0
    isEmulator() boolean ?
    isPinOrFingerprintSet() (callback)boolean 0.10.1
    isTablet() boolean ?
    hasNotch() boolean 0.23.0
    isLandscape() boolean 0.24.0
    getDeviceType() string ?

    getAPILevel()

    Gets the API level.

    Examples

    const apiLevel = DeviceInfo.getAPILevel();
    
    // iOS: ?
    // Android: 25
    // Windows: ?

    Notes

    See API Levels


    getApplicationName()

    Gets the application name.

    Examples

    const appName = DeviceInfo.getApplicationName(); // "Learnium Mobile"

    getBatteryLevel()

    Gets the battery level of the device as a float comprised between 0 and 1.

    Examples

    DeviceInfo.getBatteryLevel().then(batteryLevel => {
      // 0.759999
    });

    Notes

    Returns -1 on the iOS Simulator


    getBrand()

    Gets the device brand.

    Examples

    const brand = DeviceInfo.getBrand();
    
    // iOS: "Apple"
    // Android: "Xiaomi"
    // Windows: ?

    getBuildNumber()

    Gets the application build number.

    Examples

    const buildNumber = DeviceInfo.getBuildNumber();
    
    // iOS: "89"
    // Android: 4
    // Windows: ?

    Notes

    There is a type inconsistency: Android return an integer instead of the documented string.


    getBundleId()

    Gets the application bundle identifier.

    Examples

    const bundleId = DeviceInfo.getBundleId(); // "com.learnium.mobile"

    getCarrier()

    Gets the carrier name (network operator).

    Examples

    const carrier = DeviceInfo.getCarrier(); // "SOFTBANK"

    getDeviceCountry()

    Gets the device country based on the locale information.

    Examples

    const deviceCountry = DeviceInfo.getDeviceCountry(); // "US"

    getDeviceId()

    Gets the device ID.

    Examples

    const deviceId = DeviceInfo.getDeviceId();
    
    // iOS: "iPhone7,2"
    // Android: "goldfish"
    // Windows: ?

    getDeviceLocale()

    Gets the device locale.

    Examples

    const deviceLocale = DeviceInfo.getDeviceLocale();
    
    // iOS: "en"
    // Android: "en-US"
    // Windows: ?

    getDeviceName()

    Gets the device name.

    Examples

    const deviceName = DeviceInfo.getDeviceName();
    
    // iOS: "Becca's iPhone 6"
    // Android: ?
    // Windows: ?

    Android Permissions


    getFirstInstallTime()

    Gets the time at which the app was first installed, in milliseconds.

    Examples

    const firstInstallTime = DeviceInfo.getFirstInstallTime();
    
    // Android: 1517681764528

    getFontScale()

    Gets the device font scale. The font scale is the ratio of the current system font to the "normal" font size, so if normal text is 10pt and the system font is currently 15pt, the font scale would be 1.5 This can be used to determine if accessability settings has been changed for the device; you may want to re-layout certain views if the font scale is significantly larger ( > 2.0 )

    Examples

    const fontScale = DeviceInfo.getFontScale(); // 1.2

    getFreeDiskStorage()

    Gets available storage size, in bytes.

    Examples

    const freeDiskStorage = DeviceInfo.getFreeDiskStorage();
    
    // Android: 17179869184
    // iOS: 17179869184

    Notes

    From developer.android.com:

    Return the primary shared/external storage directory.

    Note: don't be confused by the word "external" here. This directory can better be thought as media/shared storage. It is a filesystem that can hold a relatively large amount of data and that is shared across all applications (does not enforce permissions). Traditionally this is an SD card, but it may also be implemented as built-in storage in a device that is distinct from the protected internal storage and can be mounted as a filesystem on a computer.


    getIPAddress()

    Gets the device current IP address.

    Examples

    DeviceInfo.getIPAddress().then(ip => {
      // "92.168.32.44"
    });

    Android Permissions

    Notes

    Support for iOS was added in 0.22.0


    getInstallReferrer()

    Gets the referrer string upon application installation.

    Examples

    const referrer = DeviceInfo.getInstallReferrer();
    
    // If the app was installed from https://play.google.com/store/apps/details?id=com.myapp&referrer=my_install_referrer
    // the result will be "my_install_referrer"

    getInstanceID()

    Gets the application instance ID.

    Examples

    const instanceId = DeviceInfo.getInstanceID();
    
    // Android: ?

    Notes

    See https://developers.google.com/instance-id/


    getLastUpdateTime()

    Gets the time at which the app was last updated, in milliseconds.

    Examples

    const lastUpdateTime = DeviceInfo.getLastUpdateTime();
    
    // Android: 1517681764992

    getMACAddress()

    Gets the network adapter MAC address.

    Examples

    DeviceInfo.getMACAddress().then(mac => {
      // "E5:12:D8:E5:69:97"
    });

    Android Permissions

    Notes

    iOS: This method always return "02:00:00:00:00:00" as retrieving the MAC address is disabled since iOS 7


    getManufacturer()

    Gets the device manufacturer.

    Examples

    const manufacturer = DeviceInfo.getManufacturer();
    
    // iOS: "Apple"
    // Android: "Google"
    // Windows: ?

    getMaxMemory()

    Returns the maximum amount of memory that the VM will attempt to use, in bytes.

    Examples

    const maxMemory = DeviceInfo.getMaxMemory(); // 402653183

    getModel()

    Gets the device model.

    Examples

    const model = DeviceInfo.getModel();
    
    // iOS: ?
    // Android: ?
    // Windows: ?

    getPhoneNumber()

    Gets the device phone number.

    Examples

    const phoneNumber = DeviceInfo.getPhoneNumber();
    
    // Android: ?

    Android Permissions

    Notes

    This can return undefined in certain cases and should not be relied on. SO entry on the subject.


    getReadableVersion()

    Gets the application human readable version.

    Examples

    const readableVersion = DeviceInfo.getReadableVersion();
    
    // iOS: 1.0.1
    // Android: 1.0.1
    // Windows: ?

    getSerialNumber()

    Gets the device serial number.

    Examples

    const serialNumber = DeviceInfo.getSerialNumber();
    
    // iOS: undefined
    // Android: ?
    // Windows: ?

    getSystemName()

    Gets the device OS name.

    Examples

    const systemName = DeviceInfo.getSystemName();
    
    // iOS: "iOS" on newer iOS devices "iPhone OS" on older devices, including older iPad's.
    // Android: "Android"
    // Windows: ?

    getSystemVersion()

    Gets the device OS version.

    Examples

    const systemVersion = DeviceInfo.getSystemVersion();
    
    // iOS: "11.0"
    // Android: "7.1.1"
    // Windows: ?

    getTimezone()

    Gets the device default timezone.

    Examples

    const timezone = DeviceInfo.getTimezone(); // "Africa/Tunis"

    getTotalDiskCapacity()

    Gets full disk storage size, in bytes.

    Examples

    const storageSize = DeviceInfo.getTotalDiskCapacity();
    
    // Android: 17179869184
    // iOS: 17179869184

    getTotalMemory()

    Gets the device total memory, in bytes.

    Examples

    const totalMemory = DeviceInfo.getTotalMemory(); // 1995018240

    getUniqueID()

    Gets the device unique ID.

    Examples

    const uniqueId = DeviceInfo.getUniqueID();
    
    // iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
    // Android: "dd96dec43fb81c97"
    // Windows: ?

    Notes

    • iOS: This is IDFV so it will change if all apps from the current apps vendor have been previously uninstalled.
    • android: Prior to Oreo, this id (ANDROID_ID) will always be the same once you set up your phone.

    getUserAgent()

    Gets the device User Agent.

    Examples

    const userAgent = DeviceInfo.getUserAgent();
    
    // iOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143"
    // Android: ?
    // Windows: ?

    getVersion()

    Gets the application version.

    Examples

    const version = DeviceInfo.getVersion();
    
    // iOS: "1.0"
    // Android: "1.0"
    // Windows: ?

    is24Hour()

    Tells if the user preference is set to 24-hour format.

    Examples

    const is24Hour = DeviceInfo.is24Hour(); // true

    isAirPlaneMode()

    Tells if the device is in AirPlaneMode.

    Examples

    DeviceInfo.isAirPlaneMode().then(airPlaneModeOn => {
      // false
    });

    Notes

    • This only works if the remote debugger is disabled.

    isEmulator()

    Tells if the application is running in an emulator.

    Examples

    const isEmulator = DeviceInfo.isEmulator(); // false

    isPinOrFingerprintSet()

    Tells if a PIN number or a fingerprint was set for the device.

    Examples

    DeviceInfo.isPinOrFingerprintSet()(isPinOrFingerprintSet => {
      if (!isPinOrFingerprintSet) {
        // ...
      }
    });

    Notes

    • Since the device setting for PIN/Fingerprint can be modified while the app is still open, this is available via callback instead of as a constant.
    • iOS: Not supported for iOS < 9

    isTablet()

    Tells if the device is a tablet.

    Examples

    const isTablet = DeviceInfo.isTablet(); // true

    isLandscape()

    Tells if the device is currently in landscape mode.

    Examples

    const isLandscape = DeviceInfo.isLandscape(); // true

    hasNotch()

    Tells if the device has a notch.

    Examples

    const hasNotch = DeviceInfo.hasNotch(); // true

    getDeviceType()

    Returns the device's type as a string, which will be one of:

    • Handset
    • Tablet
    • Tv
    • Unknown

    Examples

    const deviceType = DeviceInfo.getDeviceType(); // 'Handset'

    Troubleshooting

    When installing or using react-native-device-info, you may encounter the following problems:

    [android] - Unable to merge dex / Multiple dex files / Problems with `com.google.android.gms`

    react-native-device-info uses com.google.android.gms:play-services-gcm to provide [getInstance()][#getinstance]. This can lead to conflicts when building the Android application.

    If you're using a different version of com.google.android.gms:play-services-gcm in your app, you can define the googlePlayServicesVersion gradle variable in your build.gradle file to tell react-native-device-info what version it should require.

    If you're using a different library that conflicts with com.google.android.gms:play-services-gcm, you can simply ignore this dependency in your gradle file:

     compile(project(':react-native-device-info')) {
        exclude group: 'com.google.android.gms'
    }
    
    [ios] - ld: library not found for -lRNDeviceInfo-tvOS

    Seems to be a bug caused by react-native link. You can manually delete libRNDeviceInfo-tvOS.a in Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries.

    [tests] - Cannot run my test suite when using this library

    react-native-device-info contains native code, and needs to be mocked.

    Here's how to do it with jest for example:

    // in your package.json:
    "jest": {
      "setupFiles": [
        "./testenv.js"
      ],
    
    
    // testenv.js:
    jest.mock('react-native-device-info', () => {
      return {
        getModel: jest.fn(),
      };
    });
    

    Release Notes

    See the CHANGELOG.md.

    react-native-web

    As a courtesy to developers, this library was made compatible in v0.17.0 with react-native-web by providing an empty polyfill in order to avoid breaking builds.

    Only getUserAgent() will return a correct value. All other API methods will return an "empty" value of its documented return type: 0 for numbers, '' for strings, false for booleans.

    Install

    npm i react-native-device-info-lower-version-android-jszh

    DownloadsWeekly Downloads

    0

    Version

    0.26.6

    License

    MIT

    Unpacked Size

    176 kB

    Total Files

    43

    Last publish

    Collaborators

    • jszh