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('下载地址') }
])
}
})
本文档详细介绍了如何在React Native项目中设置和更新Android版本。步骤包括修改build.gradle文件,更新MainApplication.java,创建RNBridgeManager.java和RNReactPackage.java,并说明了它们的使用方法。
5420

被折叠的 条评论
为什么被折叠?



