【发布时间】:2017-09-30 01:12:36
【问题描述】:
我正在尝试使用 react-native-twilio-programmable-voice 包合并 Twilio 语音。我的应用程序在 ios 上加载,但在 android 上运行时出现此错误消息
尝试调用虚拟方法'boolean android.app.Activity.shouldShowRequestPermissionRationale' 为空 对象引用 screenshot here
我已将<uses-permission android:name="android.permission.RECORD_AUDIO" /> 包含在AndroidManifest.xml 中
在进入应用程序 4 或 5 个屏幕之前,不会调用任何与 TwilioVoice 相关的函数。
这几天一直在摸不着头脑,非常感谢任何帮助。
我的 Twilio 助手类的代码 sn-p:
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;
}
【问题讨论】:
-
您是否在 API 级别低于 22 的 Android 上进行测试?我想
ActivityCompat是那时才添加的。 -
我正在测试的设备是 Android 6.0 版本,所以应该对应 API 级别 23 对吧?较低的 API 级别是否有可能存在于较高的 android 版本上?
-
抱歉,我不是真正的 Android 开发者,所以帮不上忙。您可能想在react-native-twilio-programmable-voice repo 上尝试一个问题,它正在积极维护,您可能会在那里找到更多指导。
标签: android react-native twilio