ReactNative获取版本号android

开发的app需要实现版本动态更新的功能,首先就需要获取app的版本号。

1.Platform.version

看了下返回的数据是 21 ,类似的返回值并不是我们需要的,pass

2.react-native-device-info

我在项目里引入了这个包,也按照网上的配置都配置了,结果整个项目报错,跑不起来了。。 

配置环境太难配,pass

3.修改android文件夹下的java代码,也就是react-native 桥接原生的android代码

(1)新建一个bridge文件夹

(2)新建RNBridgeManager.java

绿框中的包路径请换成自己项目里的新建bridge文件夹的路径

package com.foshan.reactnative.bridge;

import com.facebook.react.bridge.Callback;

import com.facebook.react.bridge.ReactApplicationContext;

import com.facebook.react.bridge.ReactContextBaseJavaModule;

import com.facebook.react.bridge.ReactMethod;

import com.facebook.react.uimanager.IllegalViewOperationException;

import android.content.pm.PackageInfo;

import android.content.pm.PackageManager;

public class RNBridgeManager extends ReactContextBaseJavaModule {

    public RNBridgeManager(ReactApplicationContext reactContext) {

        super(reactContext);

    }

//    重写getName方法声明Module类名称,在RN调用时用到

    @Override

    public String getName() {

        return "BridgeManager";

    }

//    声明的方法,外界调用

    @ReactMethod

    public void getAppVersion(Callback successCallback) {

        try {

            PackageInfo info = getPackageInfo();

            if(info != null){

                successCallback.invoke(info.versionName);

            }else {

                successCallback.invoke("");

            }

        } catch (IllegalViewOperationException e){

        }

    }

//    获取 APP 信息

    private PackageInfo getPackageInfo(){

        PackageManager manager = getReactApplicationContext().getPackageManager();

        PackageInfo info = null;

        try{

            info = manager.getPackageInfo(getReactApplicationContext().getPackageName(),0);

            return info;

        }catch (Exception e){

            e.printStackTrace();

        }finally {

            return info;

        }

    }

}

(3)新建RNReactPackage.java

绿框中的路径注意修改
package com.foshan.reactnative.bridge;

import com.facebook.react.ReactPackage;

import com.facebook.react.bridge.NativeModule;

import com.facebook.react.bridge.ReactApplicationContext;

import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class RNReactPackage implements ReactPackage {

    @Override

    public List createViewManagers(ReactApplicationContext reactContext) {

        return Collections.emptyList();

    }

    @Override

    public List createNativeModules(

            ReactApplicationContext reactContext) {

        List modules = new ArrayList<>();

//        添加一个安卓原生的activity模块

        modules.add(new RNBridgeManager(reactContext));

        return modules;

    }

}

(4)找到MainApplication.java 文件,引用新增的文件

(5)前端js,引用方法

import { NativeModules } from 'react-native'

// 获取版本号

  getVerSion() {

      NativeModules.BridgeManager.getAppVersion((event) => {

        console.info(event)

      });

  }

你可能感兴趣的:(ReactNative获取版本号android)