Сделайте звонок прямо из моего родного приложения React - PullRequest
0 голосов
/ 26 мая 2020

Я более-менее новичок в реакции нативной; Я работаю над приложением, которое должно управлять финансовыми транзакциями (агентский перевод, оплата услуг и т. Д. c.). Задача приложения - иметь возможность выполнить код USSD и затем немедленно запустить вызов из собственного диспетчера вызовов телефона. Моя проблема - это сложность достижения этой цели. По сути, я не могу инициировать вызов сразу после запуска кода USSD.

Базовый проект создается с expo , но я понял, что следующие три библиотеки не могут работать на expo, что привело мне, чтобы извлечь мой проект командой expo eject (https: //docs.expo. io / expokit / eject /)

Я использую следующие библиотеки:

typeError: RNSenddIntent Android .sendOhoneCall не является функция. (В 'RNSendIntent Android .sendPhoneCall (phoneNumber, phoneAphoneOnly)', 'RNSendIntent Android .sendPhoneCall' не определено)

typeError: null не является объектом (оценка'_reactNative.NativeModule.RNImmediatePhoneCall.immediatePhoneCall ')

typeError : null не является объектом (оценка'_reactNative.NativeModules.Device.DialNumber ')

С тремя вышеупомянутыми библиотеками у меня такая же ошибка [введите описание изображения здесь] [2]

Проблема с этой библиотекой в ​​том, что она не сразу запускает код USSD и не принимает символ # в качестве параметра

вот код моих разных страниц

  • установка градиента

include ':react-native-ussd-dial'
project(':react-native-ussd-dial').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-ussd-dial/android')

include ':react-native-immediate-phone-call', ':app'
project(':react-native-immediate-phone-call').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immediate-phone-call/android')

include ':RNSendIntentModule', ':app'
project(':RNSendIntentModule').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-send-intent/android')
  • сборка grandle

dependencies {
  implementation project(':react-native-send-intent')
  implementation project(':react-native-ussd-dial')
  implementation fileTree(dir: "libs", include: ["*.jar"])
  implementation "com.facebook.react:react-native:+" // From node_modules
  addUnimodulesDependencies()

  if (enableHermes) {
    def hermesPath = "../../node_modules/hermes-engine/android/";
    debugImplementation files(hermesPath + "hermes-debug.aar")
    releaseImplementation files(hermesPath + "hermes-release.aar")
  } else {
    implementation jscFlavor
  }

// here
  implementation project(':react-native-immediate-phone-call')
  compile project(':react-native-ussd-dial')
  compile project(':RNSendIntentModule')
}

-MainApplication.jaava

@Override
protected List < ReactPackage > getPackages() {
  List < ReactPackage > packages = new PackageList(this).getPackages();
  packages.add(
    new ModuleRegistryAdapter(mModuleRegistryProvider),
    new RNSendIntentPackage(),
    new RNUssdDialPackage(),
    new RNImmediatePhoneCallPackage());
//here
  new RNImmediatePhoneCallPackage();
  new RNUssdDialPackage();
  new RNSendIntentPackage();
  return packages;

}
  • AndridManifeste. xml

< uses - permission android: name = "android.permission.CALL_PHONE" / >
...