【发布时间】:2021-06-30 20:26:32
【问题描述】:
我正在尝试使用本机模块在 react-native 中发送短信,我在网上找到了一个我复制的教程,但它对我不起作用,我没有收到任何特定错误,只是没有工作。
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
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;
}
}
我在我的 MainApplication.java 中添加了这些
import com.textngsimhosting.DirectSmsPackage;
packages.add(new DirectSmsPackage());
我的 App.js
const DirectSms = NativeModules.DirectSms
DirectSms.sendDirectSms('0701**8741', 'yhhhhhh')
请帮忙,我没有收到任何错误。我猜 DirectSmsModule.java 中的 System.out.println("couldn't send message."); 应该在 Metro 控制台中打印,它不会
【问题讨论】:
标签: javascript java react-native