React Native调用Android的原生功能
在React Native中调用Android原生功能,通常需要使用React Native的桥接功能。以下是一个简单的例子,演示如何从React Native调用Android原生方法。
首先,在Android项目中创建一个类继承自ReactContextBaseJavaModule
,并实现需要暴露给JavaScript的方法。
package com.yourpackage;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class MyNativeModule extends ReactContextBaseJavaModule {
MyNativeModule(ReactApplicationContext context) {
super(context);
}
@Override
public String getName() {
return "MyNativeModule";
}
@ReactMethod
public void showToast(String message) {
// 调用Android原生Toast功能
Toast.makeText(getReactApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
然后,需要在MainApplication.java
文件中注册这个模块:
import com.yourpackage.MyNativeModule;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
// 注册新的模块
new MyNativeModulePackage()
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
// 创建模块注册类
public static class MyNativeModulePackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(new MyNativeModule(reactContext));
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
}
最后,在React Native项目中,你可以使用以下JavaScript代码调用这个原生方法:
import { NativeModules } from 'react-native';
export default class MyComponent extends Component {
showToast = () => {
NativeModules.MyNativeModule.showToast('Hello from Android!');
};
render() {
return (
<View>
<Butt
评论已关闭