ReactNative和安卓的相互调用

``在reactnative里面调用原生方法:

1、创建一个moudle,定义好需要在js里面调用的方法

public classBridgeextendsReactContextBaseJavaModule {

privateContextmContext;

publicBridge(ReactApplicationContext reactContext) {

super(reactContext);

mContext= reactContext;

}

@Override

publicString getName() {

return "Bridge";//这里返回的必须是当前类的类名

}

/**

* 必须添加反射注解不然会报错

* 这个方法就是ReactNative将要调用的方法,会通过此类名字调用

*@parammsg

*/

@ReactMethod

public voidCallNativeMethod(String msg) {

Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();

}

}

2、创建一个自己的包,把创建的moudle添加进来

public classMyReactPackageimplementsReactPackage {

@Override

publicList createNativeModules(ReactApplicationContext reactContext) {

List modules =newArrayList<>();

modules.add(newBridge(reactContext));

returnmodules;

}

@Override

publicList> createJSModules() {

returnCollections.emptyList();

}

@Override

publicList createViewManagers(ReactApplicationContext reactContext) {

returnCollections.emptyList();

}

}

3、添加新创建的包

mReactInstanceManager= ReactInstanceManager.builder()

.setApplication(getApplication())

.setBundleAssetName("index.android.bundle")

.setJSMainModuleName("index.android")

.addPackage(newMainReactPackage())

.addPackage(newMyReactPackage())

.setUseDeveloperSupport(BuildConfig.DEBUG)

.setInitialLifecycleState(LifecycleState.RESUMED)

.build();

4、在js里面调用

onClick() {

NativeModules.Bridge(moudle的名字).CallNativeMethod('成功调用原生方法');

}``

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容