В настоящее время я пишу приложение Xamarin Forms, которое требует использования камеры, в приведенном ниже коде я запрашиваю разрешение с использованием разрешений Xamarin Essentials, которое возвращается как «Предоставлено»; сразу же после этого я запрашиваю использование камеры для съемки фотографии, которая выдает следующую ошибку:
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 для проблемы