【问题标题】:How to use native modules in react-native如何在 react-native 中使用原生模块
【发布时间】: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


    【解决方案1】:

    意识到它不适用于高于 23 (Android 6.0) 的 API 级别

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多