我目前正在编写一个需要使用相机的 Xamarin Forms 应用程序,在下面的代码中,我使用 Xamarin Essentials Permissions 请求权限,该权限返回为“Granted”;紧接着我要求使用相机拍照,这会引发以下错误。
ex = {Plugin.Media.Abstractions.MediaPermissionException:需要相机权限。
权限代码
public static async Task<bool> GetPermission<TPermission>() where TPermission : BasePermission, new()
{
var hasPermission = await Permissions.CheckStatusAsync<TPermission>();
if (hasPermission == PermissionStatus.Granted)
return true;
else if (hasPermission == PermissionStatus.Disabled)
return false;
var result = await Permissions.RequestAsync<TPermission>();
if (result != PermissionStatus.Granted)
return false;
return true;
}
照片管理器代码
if(!await PermissionHelpers.GetPermission<Permissions.Camera>())
{
await new ErrorAlert().Show("App can't take a picture without permission to use the camera");
return string.Empty;
}
var photo = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
PhotoSize = PhotoSize.Small,
SaveToAlbum = false
});
如前所述,GetPermission 方法返回 true,但仍然抛出错误。
我目前正在Android上运行它。我的 AndroidManifest.xml 中有这些权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
我现在制作了一个示例项目来展示我的问题 GitHub Repo for the issue