Xaml에서 설정된지도를 표시하기 전에 위치 권한을 요청하는 방법. Xamarin.Forms

제로 토 내성

최근 Xamarin.forms에서 sdk 수준을 6.0으로 업데이트했습니다. Xaml을 사용하여 페이지에지도를 배치했습니다. 6.0으로 업데이트했기 때문에지도를 표시하려면 권한이 필요합니다. 내 문제는 앱이지도를 표시하기 전에지도 표시 권한을 요청하는 방법을 알 수 없다는 것입니다. 결과적으로 처리되지 않은 예외가 발생합니다.

 public MapPage()
        {
            Init();
            InitializeComponent();


            azureService = AzureService.defaultManager;

        }
        private async Task Init()
        {
            await RequestLocationPermission();
        }
        protected async override void OnAppearing()
        {
            base.OnAppearing();

            MyMap.MoveToRegion(
               MapSpan.FromCenterAndRadius(
                   new Position(0, 0),
                   Distance.FromMiles(10.0)));

        }

private async Task RequestLocationPermission()
        {
            try
            {
                var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);
                if (status != PermissionStatus.Granted)
                {
                    if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))
                    {
                        await DisplayAlert("Need location", "Gunna need that location", "OK");
                    }

                    var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Location });
                    status = results[Permission.Location];
                }

                if (status == PermissionStatus.Granted)
                {
                                        }
                else if (status != PermissionStatus.Unknown)
                {
                    await DisplayAlert("Location Denied", "Can not continue, try again.", "OK");
                }
            }
            catch (Exception ex)
            {

            }
        }

지도가 Xaml로 설정된 경우 표시하기 전에 권한을 요청하려면 어떻게해야합니까?

코넬리우스 크루거

생성자가 지금 설정되는 방식은 별도의 스레드에서 실행되는 작업에서 권한 요청을 시작하는 것입니다. 즉, 사용자가 권한을 부여하기 전에 InitializeComponent ()가 실행될 수 있습니다. 문제는 생성자를 비동기 메서드로 만들 수 없으므로이 문제를 해결하는 쉬운 방법이 없다는 것입니다.

많은 노력없이이 작업을 수행하려면 생성자에서 InitializeComponent ()를 "if (status == PermissionStatus.Granted)"블록으로 이동할 수 있습니다. 아마도 다음과 같이 보일 것입니다.

if (status == PermissionStatus.Granted)
{
     Device.BeginInvokeOnMainThread(() =>
     {
         InitializeComponent()
     });
}

이 접근 방식을 사용하면 InitializeComponent () 전에 호출 될 수 있으므로 OnAppearing ()에서 수행하는 작업에주의해야합니다. 해당 시점에서 UI 구성 요소에 액세스하려고하면 실패합니다.

그러나 이것을 처리하는 더 좋은 방법은 권한 요청 코드를 한 수준 위로 이동하는 것입니다. 즉,이 페이지를 인스턴스화하는 클래스에 넣으십시오. 그런 다음 액세스가 허용 된 경우이 페이지를 표시하거나 액세스가 거부 된 경우지도가없는 다른 페이지를 표시 할 수 있습니다. 더 나은 사용자 경험을 제공 할 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다debugcn@gmail.com 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

런타임에 위치 권한을 요청하는 방법

분류에서Dev

런타임에 위치 권한을 요청하는 방법

분류에서Dev

JUnit 테스트를 위해 Android Marshmallow에서 권한을 요청하는 방법

분류에서Dev

Xamarin.Forms에서 탭보기 위에 이미지를 표시하는 방법은 무엇입니까?

분류에서Dev

MVVM을 사용하여 Restful 서비스에서 Xamarin.Forms보기로 이미지를 표시하는 방법

분류에서Dev

Xamarin.Forms-API 설명서에서 유효한 XAML 구문을 해결하는 방법

분류에서Dev

AUR에서 설치하기 위해 루트 권한을 요청하는 Aurman

분류에서Dev

Xamarin Forms : ListView 내에서 Xamarin.forms.Maps의 위치 값을 바인딩하는 방법은 무엇입니까?

분류에서Dev

Xamarin.Forms : UITableViewCell에 공개 표시기를 표시하기위한 사용자 지정 렌더러

분류에서Dev

xamarin.forms에서 xaml을 사용하여 마스터 세부 정보 페이지에 페이지 제목을 표시하는 방법은 무엇입니까?

분류에서Dev

Android Lollipop 및 기타 기기에서 위치 권한을 요청하는 방법은 무엇인가요?

분류에서Dev

CrossMediaManager를 사용하여 Xamarin.Forms의 certian 위치에서 MP3 파일을 재생하는 방법

분류에서Dev

봇이 서버에 참여하기 전에 권한을 요청하도록 만드는 방법 discord.py

분류에서Dev

json 개체를 가져 와서 Xamarin Forms에서 listview를 설정하기 전에 listview로 설정하는 방법

분류에서Dev

위치 권한을 요청하기 전에 iOS Domain = kCLErrorDomain Code = 1

분류에서Dev

Xamarin 양식에서지도를 표시하고 위치를 표시하는 방법

분류에서Dev

XAML에서 문자열이 아닌 형식을 사용하여 사용자 지정 속성 값을 설정하는 방법 [Xamarin.Forms]

분류에서Dev

Visual Studio에서보기 / 표시된 XAML 파일을 전환하는 방법

분류에서Dev

MKMapView에 기본 위치 표시기를 표시하는 방법

분류에서Dev

Xamarin Forms에서 앱 시작 중 진행률을 표시하는 방법

분류에서Dev

Xamarin Forms : 위치 공유 기능을 구현하는 방법?

분류에서Dev

Xamarin Forms에서 CarouselView에 어떤 표시기가 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

Xamarin.Forms에서 "위로"/ "뒤로"단추를 표시하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 스위치가 Xamarin Forms에서 On / Off 이미지를 표시하지 않습니다.

분류에서Dev

서비스에서 권한을 요청하는 방법

분류에서Dev

등록보기에서 위젯에 자리 표시자를 설정하는 방법 (forms.PasswordInput ()) Django

분류에서Dev

xaml을 사용하여 Xamarin에서 현재 시간을 표시하는 방법

분류에서Dev

Xamarin Forms에서 앱에 대한 푸시 알림을 통해 수신 된 데이터를 저장하는 방법

분류에서Dev

Xamarin.Forms를 사용하여 onMaster 세부 정보 페이지 맨 위에있는 불필요한 헤더를 제거하는 방법

Related 관련 기사

  1. 1

    런타임에 위치 권한을 요청하는 방법

  2. 2

    런타임에 위치 권한을 요청하는 방법

  3. 3

    JUnit 테스트를 위해 Android Marshmallow에서 권한을 요청하는 방법

  4. 4

    Xamarin.Forms에서 탭보기 위에 이미지를 표시하는 방법은 무엇입니까?

  5. 5

    MVVM을 사용하여 Restful 서비스에서 Xamarin.Forms보기로 이미지를 표시하는 방법

  6. 6

    Xamarin.Forms-API 설명서에서 유효한 XAML 구문을 해결하는 방법

  7. 7

    AUR에서 설치하기 위해 루트 권한을 요청하는 Aurman

  8. 8

    Xamarin Forms : ListView 내에서 Xamarin.forms.Maps의 위치 값을 바인딩하는 방법은 무엇입니까?

  9. 9

    Xamarin.Forms : UITableViewCell에 공개 표시기를 표시하기위한 사용자 지정 렌더러

  10. 10

    xamarin.forms에서 xaml을 사용하여 마스터 세부 정보 페이지에 페이지 제목을 표시하는 방법은 무엇입니까?

  11. 11

    Android Lollipop 및 기타 기기에서 위치 권한을 요청하는 방법은 무엇인가요?

  12. 12

    CrossMediaManager를 사용하여 Xamarin.Forms의 certian 위치에서 MP3 파일을 재생하는 방법

  13. 13

    봇이 서버에 참여하기 전에 권한을 요청하도록 만드는 방법 discord.py

  14. 14

    json 개체를 가져 와서 Xamarin Forms에서 listview를 설정하기 전에 listview로 설정하는 방법

  15. 15

    위치 권한을 요청하기 전에 iOS Domain = kCLErrorDomain Code = 1

  16. 16

    Xamarin 양식에서지도를 표시하고 위치를 표시하는 방법

  17. 17

    XAML에서 문자열이 아닌 형식을 사용하여 사용자 지정 속성 값을 설정하는 방법 [Xamarin.Forms]

  18. 18

    Visual Studio에서보기 / 표시된 XAML 파일을 전환하는 방법

  19. 19

    MKMapView에 기본 위치 표시기를 표시하는 방법

  20. 20

    Xamarin Forms에서 앱 시작 중 진행률을 표시하는 방법

  21. 21

    Xamarin Forms : 위치 공유 기능을 구현하는 방법?

  22. 22

    Xamarin Forms에서 CarouselView에 어떤 표시기가 있는지 확인하는 방법은 무엇입니까?

  23. 23

    Xamarin.Forms에서 "위로"/ "뒤로"단추를 표시하는 방법은 무엇입니까?

  24. 24

    사용자 지정 스위치가 Xamarin Forms에서 On / Off 이미지를 표시하지 않습니다.

  25. 25

    서비스에서 권한을 요청하는 방법

  26. 26

    등록보기에서 위젯에 자리 표시자를 설정하는 방법 (forms.PasswordInput ()) Django

  27. 27

    xaml을 사용하여 Xamarin에서 현재 시간을 표시하는 방법

  28. 28

    Xamarin Forms에서 앱에 대한 푸시 알림을 통해 수신 된 데이터를 저장하는 방법

  29. 29

    Xamarin.Forms를 사용하여 onMaster 세부 정보 페이지 맨 위에있는 불필요한 헤더를 제거하는 방법

뜨겁다태그

보관