【问题标题】:react-native-immediate-phone-call not working反应本机即时电话不起作用
【发布时间】:2021-12-09 04:36:35
【问题描述】:

我正在编写使用 react-native-immediate-phone-call 的应用程序,并且通过按下 Pressable 组件我需要从该模块调用函数。

import RNImmediatePhoneCall from 'react-native-immediate-phone-call';

export default function App() {
    const [getNumber, setNumber] = useState('');

    function makeCall() {
        console.log('dialing');
        return () => RNImmediatePhoneCall.immediatePhoneCall(getNumber);
    }
    ...
    return (
        ...
        <Pressable onPress={()=>makeCall()}>
            <Image source={require('./assets/phone-call.png')}/>
        </Pressable>
        ...
    );
}

使用 Metro Bunler 将控制台日志显示到终端,但返回不会以某种方式执行。我是 js 的新手并做出反应。 函数和函数调用应该如何?

【问题讨论】:

  • 尝试从返回语句return RNImmediatePhoneCall.immediatePhoneCall(getNumber);中删除() =&gt;
  • 没有帮助,但控制台日志仍然有效。没有抛出异常,所以依赖关系可能没问题。

标签: android react-native components android-phone-call


【解决方案1】:

那一刻getNumber == ''

所以,我认为RNImmediatePhoneCall.immediatePhoneCall('') 什么都不做。

另外,试试这个(当getNumber 有值时会起作用)

function makeCall() {
    console.log('dialing');
    RNImmediatePhoneCall.immediatePhoneCall(getNumber);
}

编辑:

仍然没有任何反应,我从他们的问题中找到了解决方案

首先,检查您的手机通话权限:在AndroidManifest.xml 然后添加以下行

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

如果仍然无法正常工作,请按照以下步骤操作

settings.gradle 中rootProject.name = 'YOUR_PROJ_NAME'之后 添加以下行

include ':react-native-immediate-phone-call', ':app'

build.gradle 在依赖项部分插入以下行

implementation project(':react-native-immediate-phone-call')

AndroidManifest.xml 添加以下行以及所有其他用户权限

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

MainActivity.java中导入这个

import com.github.wumke.RNImmediatePhoneCall.RNImmediatePhoneCallPackage;

在类里面,MainActivity添加如下覆盖 (由于某种原因,包括“@override”,它与其余代码不在同一个块中)

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    
    RNImmediatePhoneCallPackage.onRequestPermissionsResult(requestCode, permissions, grantResults); // very important event callback
    
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

【讨论】:

  • 没有帮助。我对导入的模块做错了吗?我应该创建RNImmediatePhoneCall 的实例吗?
  • @Kaldesyvon,我找到了解决方案,它对我来说很好。请检查并告诉我
  • 是的。 “编辑”中的说明很有帮助,它解决了我的问题。谢谢
  • @Kaldesyvon,不客气。您可以在标签中添加react-native-immediate-phone-call 吗?它将帮助某人找到这个:)
【解决方案2】:

你不是在调用函数而是返回它,所以你得到一个函数。

只需更改以下内容:

return () => RNImmediatePhoneCall.immediatePhoneCall(getNumber);

到:

RNImmediatePhoneCall.immediatePhoneCall(getNumber);

【讨论】:

    猜你喜欢
    • 2016-07-20
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多