permissions即使在信息中也无法正常工作。

问题描述 投票:0回答:0
我在我的Flutter应用程序中有一个视频会议功能,在用户开始会议之前,他们必须检查麦克风和相机权限是否已启用或无法加入会议。

builder: (context) { return AlertDialog( title: const Text("Permissions Required"), content: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "The following permissions are needed for video calls:"), if (!micEnabled) Text( "• Microphone: ${!micEnabled ? 'Not granted' : 'Granted'}"), if (!cameraEnabled) Text("• Camera: ${!cameraEnabled ? 'Not granted' : 'Granted'}"), const SizedBox(height: 8), const Text( "Please grant these permissions in your device settings to continue.", style: TextStyle(fontSize: 12), ), ], ), actions: <Widget>[ TextButton( child: const Text("Try Again"), onPressed: () { Navigator.of(context).pop(); _getPermissions(); }, ), TextButton( child: const Text("Open Settings"), onPressed: () async { Navigator.of(context).pop(); await openAppSettings(); }, ), ], ); },

  Future<bool> _getPermissions() async {
    print('Starting permission checks...');

    try {
      // Check current status first
      final micStatus = await Permission.microphone.status;
      final cameraStatus = await Permission.camera.status;
      print(
          'Initial permission status - Mic: $micStatus, Camera: $cameraStatus');

      // Update state based on current status
      setState(() {
        _isMicEnabled = micStatus.isGranted;
        _isCameraEnabled = cameraStatus.isGranted;
      });

      print('after setState - Mic: $_isMicEnabled, Camera: $_isCameraEnabled');

      // Request permissions if not already granted
      print('Requesting permissions if needed...');
      print('going to get mic permissions');
      if (!_isMicEnabled) {
        await _getMicPermissions();
      }
      print('going to get camera permissions');
      if (!_isCameraEnabled) {
        await _getCameraPermissions();
      }

      // If we still don't have permissions after requesting, show settings dialog
      if (!_isMicEnabled || !_isCameraEnabled) {
        if (context.mounted) {
          _showPermissionDeniedDialog(context, _isMicEnabled, _isCameraEnabled);
        }
        return false;
      }

      return true;
    } catch (e) {
      print('Error getting permissions: $e');
      return false;
    }
  }
我在我的信息中具有必要的权限。
    <key>NSCameraUsageDescription</key>
    <string>We need access to your camera for video calls and capturing photos</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>We need access to your microphone for voice calls and voice messages</string>

但它总是告诉我,我没有启用权限,我需要打开设备设置,然后当我打开设置时,这些权限不在。

杂货:开始权限检查... 颤音:初始许可状态 - 麦克风:允许施法,登山,相机:cermissionstatus.denied 扑来:setstate -mic:false,camera:false 颤音:如果需要,请求权限... 颤音:要获得麦克风许可 颤音:获得麦克风许可 颤音:当前的麦克风状态:crismissTatus.Dendied 颤音:麦克风的设定后 - 麦克风:false,camera:false 颤音:麦克风许可请求结果:许可证。 颤音:要获得相机权限 颤音:获得相机权限 扑来:当前的相机状态:crismissstatus.dendied 扑来:相机的设定后 - 麦克风:false,相机:false 颤音:摄像机权限请求结果:许可证。 我可以看到它说我的权限是永久拒绝的,但是我该如何解决?
对于记录,我将应用程序部署在iOS和Android上,并具有相同的代码,并且使用此代码在Android上正常工作。

我认为我的代码没有任何问题,但是我不确定我需要检查什么。

我讨厌iOS开发,我讨厌Xcode.

did did您在签名和功能中检查相机使用硬件吗?

ios flutter xcode mobile ios-permissions
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.