0

我正在编写使用的应用程序,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 的新手并做出反应。函数和函数调用应该如何?

4

2 回答 2

1

那一刻getNumber == ''

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

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

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

编辑:

尽管如此,没有任何反应,我从他们的问题中找到了解决方案

首先,检查您的手机是否允许通话: 在AndroidManifest.xml 然后添加以下行

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

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

settings.gradlerootProject.name = 'YOUR_PROJ_NAME' 添加以下行

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

build.gradle 的 dependencies 部分里面插入以下行

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);

}
于 2021-10-22T14:44:54.833 回答
0

您不是在调用该函数,而是将其返回,以便您返回一个函数。

只需更改以下内容:

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

至:

RNImmediatePhoneCall.immediatePhoneCall(getNumber);
于 2021-10-22T14:26:53.223 回答