Как отобразить несколько разрешений одновременно в xamarin.forms? - PullRequest
2 голосов
/ 24 мая 2019

Я хочу показать всплывающее окно с разрешениями для камеры и местоположения при запуске приложения или после заставки.

Я использую пакет NuGet: https://github.com/jamesmontemagno/PermissionsPlugin

Я попробовал приведенный ниже код для события нажатия кнопки.

private async void Button_Clicked(object sender, EventArgs e)
    {
        await GetPermissions();
    }


public static async Task<bool> GetPermissions()
    {
        bool permissionsGranted = true;

        var permissionsStartList = new List<Permission>()
        {
            Permission.Location,
            Permission.LocationAlways,
            Permission.LocationWhenInUse,
            Permission.Storage,
            Permission.Camera
        };

        var permissionsNeededList = new List<Permission>();
        try
        {
            foreach (var permission in permissionsStartList)
            {
                var status = await CrossPermissions.Current.CheckPermissionStatusAsync(permission);
                if (status != PermissionStatus.Granted)
                {
                    permissionsNeededList.Add(permission);
                }
            }
        }
        catch (Exception ex)
        {
        }

        var results = await CrossPermissions.Current.RequestPermissionsAsync(permissionsNeededList.ToArray());

        try
        {
            foreach (var permission in permissionsNeededList)
            {
                var status = PermissionStatus.Unknown;
                //Best practice to always check that the key exists
                if (results.ContainsKey(permission))
                    status = results[permission];
                if (status == PermissionStatus.Granted || status == PermissionStatus.Unknown)
                {
                    permissionsGranted = true;
                }
                else
                {
                    permissionsGranted = false;
                    break;
                }
            }
        }
        catch (Exception ex)
        {
        }
        return permissionsGranted;
    }

Пожалуйста, дайте ваши предложения или лучший подход к нему.

1 Ответ

0 голосов
/ 27 мая 2019

Я хочу показать всплывающее окно разрешения времени выполнения для камеры и местоположения, когда приложение запускается или после заставки.

Если вы хотите разрешить всплывающее окно для камеры и местоположения, когда app starts or after splash screen.

Вы можете вызвать метод GetPermissions в OnAppearing() главной страницы:

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    protected override async void OnAppearing()
    {
        base.OnAppearing();

        bool a = await GetPermissions();
    }

    public static async Task<bool> GetPermissions()
    {
        ....
    }
}

Примечание:

  1. Как уже упоминалось здесь , Когда вы устанавливаете PermissionsPlugin, он также установит файл «MainApplication.cs» в ваше приложение для Android, и он должен быть там.

  2. И убедитесь, что вы выбрали разрешения READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, ACCESS_COARSE_LOCATION и ACCESS_FINE_LOCATION, щелкнув правой кнопкой мыши xxxx.Android project -> Properties -> Android Mainfest - > Required permissions.

Я загрузил образец , и вы можете проверить. Дайте мне знать, если это работает.

...