react-native-immediate-phone-调用不工作

react-native-immediate-phone-call not working

我正在编写使用 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 的终端中,但 return 无法以某种方式执行。我是 js 的新手并做出反应。 函数和函数调用应该如何?

您不是在调用该函数,而是返回它,因此您得到了一个函数。

只需更改以下内容:

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

至:

RNImmediatePhoneCall.immediatePhoneCall(getNumber);

那一刻getNumber == ''

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

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

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

编辑:

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

首先,检查您的 phone 通话权限:在 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 在依赖项部分插入以下行

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;

在 class 中,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);

}