[英]How to use native modules in react-native
i'm trying to use native modules to send sms in react-native, i found a tutorial online that i replicated, but it does not work for me, i don't get any particular error, it just isn't working.我正在尝试使用本机模块在 react-native 中发送短信,我在网上找到了一个我复制的教程,但它对我不起作用,我没有收到任何特定错误,它只是不起作用。
DirectSmsModule.java DirectSmsModule.java
package com.send;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.uimanager.IllegalViewOperationException;
import android.telephony.SmsManager; //++ make sure this package is available always
public class DirectSmsModule extends ReactContextBaseJavaModule {
public DirectSmsModule(ReactApplicationContext reactContext) {
super(reactContext); //required by React Native
}
@Override
//getName is required to define the name of the module represented in JavaScript
public String getName() {
return "DirectSms";
}
@ReactMethod
public void sendDirectSms(String phoneNumber, String msg) {
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, msg, null, null);
System.out.println("message sent successfully.");
} catch (Exception ex) {
System.out.println("couldn't send message.");
}
}
}
DirectSmsPackage.java DirectSmsPackage.java
package com.send;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import com.send.DirectSmsModule; // enoxscanner should be replaced with your own package name
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class DirectSmsPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
//this is where you register the module
modules.add(new DirectSmsModule(reactContext));
return modules;
}
}
I added these in my MainApplication.java我在 MainApplication.java 中添加了这些
import com.textngsimhosting.DirectSmsPackage;
packages.add(new DirectSmsPackage());
My App.js我的 App.js
const DirectSms = NativeModules.DirectSms
DirectSms.sendDirectSms('0701**8741', 'yhhhhhh')
Please help, i don't get any errors at all.请帮忙,我根本没有收到任何错误。 I'm guessing
System.out.println("couldn't send message.");
我猜
System.out.println("couldn't send message.");
in DirectSmsModule.java should print in metro console, it doesn't在 DirectSmsModule.java 中应该在地铁控制台中打印,它不会
意识到它不适用于高于 23 (Android 6.0) 的 API 级别
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.