Разрешение на камеру и местоположение во время выполнения в формах Xamarin

#xamarin #xamarin.forms #xamarin.android

Вопрос:

Я создал приложение Xamarin forms, и для него требуется два разрешения, т. е. i)Местоположение и ii)Камера.
Мне нужно получить оба разрешения во время выполнения, но, к сожалению, я могу получить только одно разрешение одновременно при запуске приложения.

Есть ли какое-либо решение для запроса обоих разрешений одновременно во время выполнения.

Комментарии:

1. Привет! Это хороший совет-запрашивать разрешение, когда оно требуется приложению, а не когда приложение запускается. Кроме того, как вы проверяете и запрашиваете разрешения? Вы используете Xamarin. Предметы первой необходимости?

2. Спасибо вам за ваш совет. и я не использую функцию разрешений Xamarin. Основы Я запросил разрешение во время выполнения у проекта Android

Ответ №1:

Это хороший совет-не запрашивать разрешения при запуске приложения, просто потому, что пользователь может не знать, для чего оно предназначено.

Также проверьте и попросите разрешения, когда оно вам понадобится. Например, спросите разрешение камеры непосредственно перед открытием камеры.

Вы можете сделать все это с помощью Xamarin.Предметы первой необходимости. Если в вашем проекте его нет, следуйте инструкциям по его настройке в документации.

И тогда вы сможете делать все в своем общем коде (для всех платформ!)

Есть масса примеров, я напишу один. Вы можете запрашивать разрешения одно за другим или в два разных момента

 public async void GoToCameraPage()
        {
            var status = await Permissions.CheckStatusAsync<Permissions.Camera>();
            if (status == PermissionStatus.Granted)
            {
                //We have permission!
                await Navigation.PushAsync(new CameraPage());
            }
            else
            {
                //Let the user know why
                await DisplayAlert("Permission needed", "I will need Camera permission for this action", "Ok");
                //Ask for the permission
                status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
                if (status == PermissionStatus.Granted)
                {
                    //YES, now we have permission
                }
                else
                {
                    //Ok, maybe I will ask again
                }
            }
        }
 

Комментарии:

1. Спасибо за ответ, я получил свой ответ от here-docs.microsoft.com/en-us/answers/questions/590593 /…