public static void MakeGlobalDefault(this AccessDenialResponse accessDenialResponse) { if (accessDenialResponse != AccessDenialResponse.GlobalDefault) { PlatformDelegate.DefaultAccessDenialResponse = accessDenialResponse; } }
/* #region Private Methods * internal override async Task<bool> RequestAccess(string message) * { * if (await base.RequestAccess(message)) * { * if (await FilePicker.PickSingleFileAsync(this) is IStorageFile iStorageFile && iStorageFile is StorageFile storageFile) * { * Url = storageFile.Url; * Bookmark = BookmarkExtensions.GetOrCreateBookmark(Url); * return CanWrite(); * } * } * return false; * } #endregion */ #region IStorageFile #region Check Access /* * public async Task<bool> CanRead() * { * var result = NSFileManager.DefaultManager.IsReadableFile(Path); * return result; * } * * public bool CanWrite() * { * var result = NSFileManager.DefaultManager.IsWritableFile(Path); * return result; * } */ internal async Task <bool> StartReadAccess(Action action = null) { if (!await StartAccess()) { return(false); } var accessDenialResponse = AccessDenialResponse.Value(); if (!CanRead && accessDenialResponse == AccessDenialResponse.RequestAccess) { await RequestAccess(Path); } if (!CanRead) { if (action != null) { action.Invoke(); } StopAccess(); if (accessDenialResponse == AccessDenialResponse.Exception) { ThrowAccessException(); } return(false); } return(true); }
public static AccessDenialResponse Value(this AccessDenialResponse accessDenialResponse) { if (accessDenialResponse == AccessDenialResponse.GlobalDefault || accessDenialResponse == AccessDenialResponse.Exception) { return(PlatformDelegate.DefaultAccessDenialResponse); } //return AccessDenialResponse.RequestAccess; return(accessDenialResponse); }
internal async Task <bool> StartWriteAccess(Action action = null) { if (!Exists() && GetParent() is StorageFolder folder) { if (folder.CanWrite) { return(true); } await folder.RequestAccess(folder.Path); return(folder.CanWrite); } if (!await StartAccess()) { return(false); } var accessDenialResponse = AccessDenialResponse.Value(); if (!CanWrite && accessDenialResponse == AccessDenialResponse.RequestAccess) { await RequestAccess(Path); } if (!CanWrite) { if (action != null) { action.Invoke(); } StopAccess(); if (accessDenialResponse == AccessDenialResponse.Exception) { ThrowAccessException(); } return(false); } return(true); }