javascript - 如何在 react-native 中使用原生模块
问题描述
我正在尝试使用本机模块在 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')
请帮忙,我根本没有任何错误。我猜System.out.println("couldn't send message.");
DirectSmsModule.java 应该在地铁控制台中打印,它没有
解决方案
意识到它不适用于高于 23 的 API 级别(Android 6.0)
推荐阅读
- docker - 启动 Docker 映像
- html - 某些看似随机的引导样式元素在 Express/Node 中不起作用
- javascript - (节点:4044)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“缓存”
- python - TypeError:'int'对象不可调用,为差异变量分配相同的名称?
- javascript - 无法解决弃用警告
- android - 通知没有触发一段时间(FLutter)
- react-native - 使用反应原生 fetch 调用从 API 更新值
- java - PartialResultException:未处理的继续引用;剩下的名字''
- html - 使用 calc 缩进 CSS Grid 的子元素与网格列准确对齐
- excel - 将选项卡导出到工作簿位置或下载文件夹