android获取版本号报错,ReactNative获取版本号android

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

1.Platform.version

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

2.react-native-device-info

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

配置环境太难配,pass

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

(1)新建一个bridge文件夹

beeabee641eb

(2)新建RNBridgeManager.java

beeabee641eb

绿框中的包路径请换成自己项目里的新建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

beeabee641eb

绿框中的路径注意修改

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 文件,引用新增的文件

beeabee641eb

(5)前端js,引用方法

import { NativeModules } from 'react-native'

// 获取版本号

getVerSion() {

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

console.info(event)

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值