反应原生"Attempt to invoke virtual method 'android.app.Activity.showdShowRequestPermissionRationale' o



我正在尝试使用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之后,问题似乎不再显示了。

我通过启动一个新的反应本机项目解决了这个问题,因为它可以节省寻找未知解决方案的所有压力

相关内容

  • 没有找到相关文章

最新更新