2

私は現在、カメラの使用を必要とする 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 リポジトリを紹介するサンプル プロジェクトを作成しまし た。

4

4 に答える 4