反应本机即时电话不起作用

Posted

技术标签:

【中文标题】反应本机即时电话不起作用【英文标题】: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; 没有帮助,但控制台日志仍然有效。没有抛出异常,所以依赖关系可能没问题。 【参考方案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);

【讨论】:

以上是关于反应本机即时电话不起作用的主要内容,如果未能解决你的问题,请参考以下文章

反应本机相机,onBarCodeRead 不起作用

水平滚动视图在本机反应中不起作用

反应本机抽屉导航在按钮单击时不起作用

视频在本机反应(android)中不起作用

在本机反应中安排本地通知不起作用

反应本机 NavigationDrawer navigation.toggleDrawer() 不起作用