反应本机即时电话不起作用
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);
中删除() =>
没有帮助,但控制台日志仍然有效。没有抛出异常,所以依赖关系可能没问题。
【参考方案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);
【讨论】:
以上是关于反应本机即时电话不起作用的主要内容,如果未能解决你的问题,请参考以下文章