私は現在、カメラの使用を必要とする Xamarin Forms アプリを作成しています。以下のコードでは、「許可」として返される Xamarin Essentials Permissions を使用して許可を要求しています。その直後に、カメラを使用して写真を撮るように要求していますが、次のエラーがスローされます。
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 リポジトリを紹介するサンプル プロジェクトを作成しまし た。