ReactNative设置Android版本更新

本文档详细介绍了如何在React Native项目中设置和更新Android版本。步骤包括修改build.gradle文件,更新MainApplication.java,创建RNBridgeManager.java和RNReactPackage.java,并说明了它们的使用方法。

1. 设置版本

路径:android/app/build.gradle

android {

	defaultConfig {

		versinName: "1.1.0"

	}

}

2. 修改方法

路径:android\app\src\main\java\com\自己的项目包名\MainApplication.java

 		@Override
        protected List<ReactPackage> getPackages() {
          @SuppressWarnings("UnnecessaryLocalVariable")
          List<ReactPackage> packages = new PackageList(this).getPackages();
          // Packages that cannot be autolinked yet can be added manually here, for example:
          packages.add(new RNReactPackage()); // 添加这行
          return packages;
        }

3. 新建

3.1、RNBridgeManager.java

路径:android\app\src\main\java\com\自己的项目包名\reactnative\RNBridgeManager.java

package com.自己的项目包名;

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.2 RNReactPackage.java

路径:android\app\src\main\java\com\自己的项目包名\reactnative\RNReactPackage.java

package com.自己的项目包名;

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<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }
    @Override
    public List<NativeModule> createNativeModules(
            ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();
		// 添加一个安卓原生的activity模块
        modules.add(new RNBridgeManager(reactContext));
        return modules;
    }
}

4. 使用

import { NativeModules, Alert, Linking } from 'react-native';

// 适当位置
    NativeModules.BridgeManager.getAppVersion(e => {
      const sysV = Number(e) * 100
      const serviceV = Number(服务器请求回来的版本号) * 100
      if(sysV !== serviceV) {
        Alert.alert('版本更新', `当前版本是:${e}, 点击OK去升级!`, [
          { text: "OK", onPress: () => Linking.openURL('下载地址') }
        ])
      }
    })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值