我正在尝试使用React-twilio-prograble-abroksmable-voice软件包结合Twilio语音。我的应用程序在iOS上加载,但是在Android上运行时,我会收到此错误消息
尝试调用虚拟方法'布尔值 android.app.activity.shouldshouldshowrequestperpermissionrationale' 对象引用 屏幕截图在这里
我在 AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
,直到4或5个屏幕进入应用程序。
,都没有调用与Twiliovoice相关的功能。现在已经抓了几天,任何帮助都非常感谢。
我的Twilio助手类的代码片段:
import TwilioVoice from 'react-native-twilio-programmable-voice';
import {Platform} from 'react-native';
import config from '../config/Config';
export default class Voip{
constructor(props) {
this.state = {
};
}
async setupDeviceWithToken(accessToken){
console.log('V32: setup device', accessToken);
TwilioVoice.addEventListener('deviceReady', () => this.deviceReadyHandler());
TwilioVoice.addEventListener('deviceNotReady', () => this.deviceNotReadyHandler());
TwilioVoice.addEventListener('connectionDidConnect', () => this.connectionDidConnectHandler());
TwilioVoice.addEventListener('connectionDidDisconnect', () => this.connectionDidDisconnectHandler());
if(Platform.OS === 'ios')
{
TwilioVoice.addEventListener('callRejected', this.callRejected());
} else if (Platform.OS === 'android')
{
TwilioVoice.addEventListener('deviceDidReceiveIncoming', this.deviceDidReceiveIncomingHandler());
}
var success;
try {
success = await TwilioVoice.initWithToken(accessToken);
console.log('V36: ', success);
//return success;
}
catch(err){
console.log('V40: ' ,err);
return err;
}
// if(Platform.OS === 'ios')
// {
try {
TwilioVoice.configureCallKit({
appName: 'VoipApp' // Required param
})
console.log('V50: ios success');
//return 'success';
}
catch (err) {
console.log('V54: ',err);
return err;
}
// }
return success;
}
我一直在使用相同的库来处理与React Native的集成。我在尝试这种整合时会感到您的痛苦,因为一路上有很多打ic。当让Android侧处理权限时,我遇到了这个问题。
我发现可以通过Android上的React Antial来处理权限。我评论了Android的权限电话,并切换到了React Antive实施,这对我有用。
自这个问题发布以来,已经进行了许多更新,因此用户必须注意iOS(PODS),Android和React Native包装器之间使用哪些版本。我最终分叉了图书馆以控制合并的内容,因为每个方面都在积极的开发中。
async function requestMicrophonePermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.RECORD_AUDIO,
{
'title': `${name} Microphone Permission`,
'message': `${name} needs access to your microphone
'so you can talk.`
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("Microphone permission granted")
} else {
console.log("Microphone permission denied")
}
} catch (err) {
console.warn(err)
}
}
好运!
我遇到了同样的问题,在详细检查代码后,我发现权限请求是在Twiliovoicemodule的构造函数中提出的,当时,可能还没有初始化ActivityCompat(顺便说一句,我是iOS开发人员,在Android上工作并不多)。因此,我创建了一个@reaeactMethod,该 @reaeactMethod征求了许可,并在到达呼叫屏幕后以反应态为单位。
类似的东西:
@ReactMethod
public void askForMicrophones() {
if (!checkPermissionForMicrophone()) {
requestPermissionForMicrophone();
}
}
我有相同类型的问题,但尝试调用接口方法的尝试'content.context)'null对象引用
ℹ️将Expo-Camera从12.1.0降至12.0.3之后,问题似乎不再显示了。
我通过启动一个新的反应本机项目解决了这个问题,因为它可以节省寻找未知解决方案的所有压力