Пример #1
0
        private async Task <bool> CheckAndRequestPermissionAsync()
        {
            Microphone mic = new Microphone();

            // ios status=unknown at first, and denied after has been denied
            // android status=denied at first

            if (await mic.CheckStatusAsync() == PermissionStatus.Granted)
            {
                return(true);
            }

            // first make a request
            var status = await mic.RequestAsync();

            if (status == PermissionStatus.Granted)
            {
                return(true);
            }

            // android allows retry, ios does not
            if (permissionRequestInfo.IsRetryAllowedForDeniedMicrophone())
            {
                await DisplayAlert(AppResources.PermissionRationaleTitle,
                                   AppResources.PermissionRationaleMessage, AppResources.PermissionRationaleDismiss);
            }
            else
            {
                // ios: denied, android: denied and do not ask again -> user needs to fix manually
                await DisplayAlert(AppResources.PermissionDeniedTitle,
                                   AppResources.PermissionDeniedMessage, AppResources.PermissionDeniedDismiss);
            }

            return(false);
        }