diff --git a/lib/ui/utils/permission.dart b/lib/ui/utils/permission.dart index 6ca7d3f..25f9517 100644 --- a/lib/ui/utils/permission.dart +++ b/lib/ui/utils/permission.dart @@ -77,6 +77,11 @@ class _PermissionRequestInfo extends TIMUIKitState "icon": "images/chat_permission_icon_file.png", "text": TIM_t("为方便您查看和选择相册里的图片视频发送给朋友,以及保存内容到设备,请允许我们访问您设备上的照片、媒体内容。") }, + 22: { + "name": TIM_t("管理所有文件"), + "icon": "images/chat_permission_icon_file.png", + "text": TIM_t("为方便您访问设备上的所有照片、视频和文件,以便发送给朋友和保存内容到设备,请允许我们管理所有文件的权限。这样您就可以选择设备上的任意资源了。") + }, 32: { "name": TIM_t("相册"), "icon": "images/chat_permission_icon_file.png", diff --git a/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_image_elem.dart b/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_image_elem.dart index 9daa055..9e7383d 100644 --- a/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_image_elem.dart +++ b/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_image_elem.dart @@ -148,13 +148,23 @@ class _TIMUIKitImageElem extends TIMUIKitState { AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; if (PlatformUtils().isMobile) { if ((androidInfo.version.sdkInt) >= 33) { - final photos = await Permissions.checkPermission( + // Android 13+: 优先检查管理外部存储权限以访问所有资源 + final manageExternalStorage = await Permissions.checkPermission( context, - Permission.photos.value, + Permission.manageExternalStorage.value, theme, ); - if (!photos) { - return; + + if (!manageExternalStorage) { + // 如果没有管理外部存储权限,则检查照片权限 + final photos = await Permissions.checkPermission( + context, + Permission.photos.value, + theme, + ); + if (!photos) { + return; + } } } else { final storage = await Permissions.checkPermission( diff --git a/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_more_panel.dart b/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_more_panel.dart index 229e35b..ae08918 100644 --- a/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_more_panel.dart +++ b/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_more_panel.dart @@ -361,18 +361,28 @@ class _MorePanelState extends TIMUIKitState { if (PlatformUtils().isAndroid) { AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; if ((androidInfo.version.sdkInt) >= 33) { - final videos = await Permissions.checkPermission( + // Android 13+: 优先检查管理外部存储权限以访问所有资源 + final manageExternalStorage = await Permissions.checkPermission( context, - Permission.videos.value, + Permission.manageExternalStorage.value, theme, ); - final photos = await Permissions.checkPermission( - context, - Permission.photos.value, - theme, - ); - if (!videos && !photos) { - return; + + if (!manageExternalStorage) { + // 如果没有管理外部存储权限,则检查媒体权限 + final videos = await Permissions.checkPermission( + context, + Permission.videos.value, + theme, + ); + final photos = await Permissions.checkPermission( + context, + Permission.photos.value, + theme, + ); + if (!videos && !photos) { + return; + } } } else { final storage = await Permissions.checkPermission( diff --git a/lib/ui/widgets/video_screen.dart b/lib/ui/widgets/video_screen.dart index 75e9891..a484869 100644 --- a/lib/ui/widgets/video_screen.dart +++ b/lib/ui/widgets/video_screen.dart @@ -86,13 +86,22 @@ class _VideoScreenState extends TIMUIKitState { final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; if ((androidInfo.version.sdkInt) >= 33) { - final videos = await Permissions.checkPermission( + // Android 13+: 优先检查管理外部存储权限以访问所有资源 + final manageExternalStorage = await Permissions.checkPermission( context, - Permission.videos.value, + Permission.manageExternalStorage.value, ); + + if (!manageExternalStorage) { + // 如果没有管理外部存储权限,则检查视频权限 + final videos = await Permissions.checkPermission( + context, + Permission.videos.value, + ); - if (!videos) { - return; + if (!videos) { + return; + } } } else { final storage = await Permissions.checkPermission(