From 0e6d484e52ceaf982cc6bdfd85bac2e7638e9cff Mon Sep 17 00:00:00 2001 From: fuenmao <980740792@qq.com> Date: Wed, 11 Dec 2024 16:11:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/app/src/main/AndroidManifest.xml | 3 - wgshare/ios/Podfile | 61 ++++++++++++++++++- .../lib/pages/metting/meeting_main_logic.dart | 5 +- .../permission/AndroidPermissionHandler.dart | 30 ++++++++- .../permission/IosPermissionHandler.dart | 31 +++++++++- .../utils/permission/PermissionService.dart | 16 +++++ wgshare/lib/utils/permission_handler.dart | 36 ----------- 7 files changed, 133 insertions(+), 49 deletions(-) create mode 100644 wgshare/lib/utils/permission/PermissionService.dart delete mode 100644 wgshare/lib/utils/permission_handler.dart diff --git a/wgshare/android/app/src/main/AndroidManifest.xml b/wgshare/android/app/src/main/AndroidManifest.xml index 79ad4d1..095a9e0 100644 --- a/wgshare/android/app/src/main/AndroidManifest.xml +++ b/wgshare/android/app/src/main/AndroidManifest.xml @@ -2,9 +2,6 @@ - - - initRtc() async { // 请求麦克风、摄像头权限 - PermissionHandler.requestCameraPermission(); - PermissionHandler.requestMicrophonePermission(); + PermissionService.requestPermissions(); // 创建 RtcEngine 对象 state.rctEngine.value = createAgoraRtcEngineEx(); diff --git a/wgshare/lib/utils/permission/AndroidPermissionHandler.dart b/wgshare/lib/utils/permission/AndroidPermissionHandler.dart index 0b4e6cb..68460b1 100644 --- a/wgshare/lib/utils/permission/AndroidPermissionHandler.dart +++ b/wgshare/lib/utils/permission/AndroidPermissionHandler.dart @@ -4,6 +4,7 @@ import 'package:permission_handler/permission_handler.dart'; import 'dart:io'; import '../device_info.dart'; +import '../toast_utils.dart'; class AndroidPermissionHandler { Future requestAllPermissions() async { @@ -13,6 +14,12 @@ class AndroidPermissionHandler { await requestStoragePermission(); await requestNotificationPermission(); await requestPhonePermission(); + await requestMicrophonePermission(); + } + + Future requestCameraToMicrophonePermissions() async { + await requestCameraPermission(); + await requestMicrophonePermission(); } Future requestLocationPermission() async { @@ -54,11 +61,14 @@ class AndroidPermissionHandler { Future requestCameraPermission() async { PermissionStatus status = await Permission.camera.request(); if (status.isGranted) { - print("Android: 相机权限已授予"); + print("Android: 摄像头权限已授予"); } else if (status.isPermanentlyDenied) { - print("Android: 相机权限被永久拒绝,请前往设置开启"); + print("Android: 摄像头权限被永久拒绝,请前往设置开启"); + ToastUtils.showError("权限被永久拒绝,请前往设置开启!"); + openAppSettings(); } else { - print("Android: 相机权限被拒绝"); + print("Android: 摄像头权限被拒绝"); + ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!"); } } @@ -94,4 +104,18 @@ class AndroidPermissionHandler { print("Android: 电话权限被拒绝"); } } + + static Future requestMicrophonePermission() async { + PermissionStatus status = await Permission.microphone.request(); + if (status.isGranted) { + print("Android: 麦克风权限已授予"); + } else if (status.isPermanentlyDenied) { + print("Android: 麦克风权限被永久拒绝,请前往设置开启"); + ToastUtils.showError("权限被永久拒绝,请前往设置开启!"); + openAppSettings(); + } else { + print("Android: 麦克风限被拒绝"); + ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!"); + } + } } \ No newline at end of file diff --git a/wgshare/lib/utils/permission/IosPermissionHandler.dart b/wgshare/lib/utils/permission/IosPermissionHandler.dart index 508e261..c79b289 100644 --- a/wgshare/lib/utils/permission/IosPermissionHandler.dart +++ b/wgshare/lib/utils/permission/IosPermissionHandler.dart @@ -1,5 +1,7 @@ import 'package:permission_handler/permission_handler.dart'; +import '../toast_utils.dart'; + class IosPermissionHandler { Future requestAllPermissions() async { await requestLocationPermission(); @@ -8,6 +10,12 @@ class IosPermissionHandler { await requestStoragePermission(); await requestNotificationPermission(); await requestPhonePermission(); + await requestMicrophonePermission(); + } + + Future requestCameraToMicrophonePermissions() async { + await requestCameraPermission(); + await requestMicrophonePermission(); } Future requestLocationPermission() async { @@ -33,11 +41,14 @@ class IosPermissionHandler { Future requestCameraPermission() async { PermissionStatus status = await Permission.camera.request(); if (status.isGranted) { - print("iOS: 相机权限已授予"); + print("iOS: 摄像头权限已授予"); } else if (status.isPermanentlyDenied) { - print("iOS: 相机权限被永久拒绝,请前往设置开启"); + print("iOS: 摄像头权限被永久拒绝,请前往设置开启"); + ToastUtils.showError("权限被永久拒绝,请前往设置开启!"); + openAppSettings(); } else { - print("iOS: 相机权限被拒绝"); + print("iOS: 摄像头权限被拒绝"); + ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!"); } } @@ -71,4 +82,18 @@ class IosPermissionHandler { print("iOS: 电话权限被拒绝"); } } + + static Future requestMicrophonePermission() async { + PermissionStatus status = await Permission.microphone.request(); + if (status.isGranted) { + print("iOS: 麦克风权限已授予"); + } else if (status.isPermanentlyDenied) { + print("iOS: 麦克风权限被永久拒绝,请前往设置开启"); + ToastUtils.showError("权限被永久拒绝,请前往设置开启!"); + openAppSettings(); + } else { + print("iOS: 麦克风限被拒绝"); + ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!"); + } + } } \ No newline at end of file diff --git a/wgshare/lib/utils/permission/PermissionService.dart b/wgshare/lib/utils/permission/PermissionService.dart new file mode 100644 index 0000000..ca7b394 --- /dev/null +++ b/wgshare/lib/utils/permission/PermissionService.dart @@ -0,0 +1,16 @@ +import 'dart:io'; + +import 'AndroidPermissionHandler.dart'; +import 'IosPermissionHandler.dart'; + +class PermissionService { + static Future requestPermissions() async { + if (Platform.isIOS) { + // 调用iOS权限处理逻辑 + await IosPermissionHandler().requestCameraToMicrophonePermissions(); + } else if (Platform.isAndroid) { + // 调用Android权限处理逻辑 + await AndroidPermissionHandler().requestCameraToMicrophonePermissions(); + } + } +} \ No newline at end of file diff --git a/wgshare/lib/utils/permission_handler.dart b/wgshare/lib/utils/permission_handler.dart deleted file mode 100644 index 7213418..0000000 --- a/wgshare/lib/utils/permission_handler.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:permission_handler/permission_handler.dart'; -import 'package:wgshare/utils/toast_utils.dart'; - -class PermissionHandler { - - /// 摄像头权限 - static Future requestCameraPermission() async { - PermissionStatus status = await Permission.camera.request(); - if (status.isGranted) { - debugPrint("wgs输出===:权限-摄像头权限已授予"); - } else if (status.isPermanentlyDenied) { - debugPrint("wgs输出===:权限-摄像头权限被永久拒绝,请前往设置开启"); - ToastUtils.showError("权限被永久拒绝,请前往设置开启!"); - openAppSettings(); - } else { - debugPrint("wgs输出===:权限-摄像头权限被拒绝"); - ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!"); - } - } - - /// 麦克风权限 - static Future requestMicrophonePermission() async { - PermissionStatus status = await Permission.microphone.request(); - if (status.isGranted) { - debugPrint("wgs输出===:权限-麦克风权限已授予"); - } else if (status.isPermanentlyDenied) { - debugPrint("wgs输出===:权限-麦克风权限被永久拒绝,请前往设置开启"); - ToastUtils.showError("权限被永久拒绝,请前往设置开启!"); - openAppSettings(); - } else { - debugPrint("wgs输出===:权限-麦克风权限被拒绝"); - ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!"); - } - } -} \ No newline at end of file