.NET MAUI中MediaPicker.CaptureVideoAsync在Android上返回Null
解决.NET 7 MAUI Android上MediaPicker.CaptureVideoAsync返回null的问题
核心原因
拍摄视频需要同时获取相机权限和麦克风权限(视频包含音频轨道),你的代码仅请求了相机权限,权限不足导致MediaPicker无法正常返回拍摄结果。
解决方案步骤
1. 添加权限声明
在Android项目的Properties/AndroidManifest.xml中添加以下权限,或者在MainActivity.cs顶部通过特性声明(MAUI会自动同步到Manifest):
通过特性声明(推荐):
[assembly: UsesPermission(Android.Manifest.Permission.Camera)] [assembly: UsesPermission(Android.Manifest.Permission.RecordAudio)] [assembly: UsesFeature("android.hardware.camera", Required = false)] [assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]
直接修改AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
2. 修改代码补充权限请求
更新你的代码,同时检查并请求相机和麦克风权限:
if (MediaPicker.Default.IsCaptureSupported) { // 检查并请求相机权限 var cameraStatus = await Permissions.CheckStatusAsync<Permissions.Camera>(); if (cameraStatus != PermissionStatus.Granted) { cameraStatus = await Permissions.RequestAsync<Permissions.Camera>(); if (cameraStatus != PermissionStatus.Granted) { return; } } // 检查并请求麦克风权限(拍摄视频必需) var micStatus = await Permissions.CheckStatusAsync<Permissions.Microphone>(); if (micStatus != PermissionStatus.Granted) { micStatus = await Permissions.RequestAsync<Permissions.Microphone>(); if (micStatus != PermissionStatus.Granted) { return; } } var video = await MediaPicker.CaptureVideoAsync(); // 先判空避免空引用异常 if (video != null) { string localFilePath = Path.Combine(FileSystem.CacheDirectory, video.FileName); // 将临时文件复制到应用缓存目录(可选,防止原临时文件被系统清理) using var sourceStream = await video.OpenReadAsync(); using var targetStream = File.OpenWrite(localFilePath); await sourceStream.CopyToAsync(targetStream); } }
3. 额外注意事项
- 确保你的.NET 7 MAUI项目已更新到最新补丁版本,部分早期版本存在MediaPicker的兼容性问题。
- 测试时注意:Android 13及以上系统,权限请求弹窗会分别询问相机和麦克风权限,需全部允许。
内容的提问来源于stack exchange,提问作者spac3wyrm
相关产品推荐
相关产品推荐

