UWP根据文件获取文件夹权限,
根据文件获得路径,如无权限使用选择器让用户选择文件夹索要权限
//打开本地文件存储路径 public static async Task OpenFilePath(StorageFile file,string faToken = "") { //获取文件所在的文件夹路径 var path = file.Path.Replace(@"\" + file.Name, ""); Debug.WriteLine(path); //检查是否拥有文件夹权限 try { StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(path); Debug.WriteLine("拥有文件夹权限,打开文件夹"); await Launcher.LaunchFolderAsync(folder); } catch (Exception ex) { Debug.WriteLine("无法获取文件夹"+ex.Message); var dialog = new MessageDialog("应用拥有文件权限,但无文件夹权限,请求获得文件夹权限,点击确定获取", "请求权限"); dialog.Commands.Add(new UICommand("获取", async cmd => { FolderPicker fPicker = new FolderPicker(); fPicker.FileTypeFilter.Add(".txt"); fPicker.FileTypeFilter.Add(".rtf"); var selectedFolder=await fPicker.PickSingleFolderAsync(); if (selectedFolder != null) { //string mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(file, "20120716"); // Add to FA without metadata var faToken1 = StorageApplicationPermissions.FutureAccessList.Add(selectedFolder); } }, commandId: 0)); dialog.Commands.Add(new UICommand("拒绝", cmd => { }, commandId: 1)); //设置默认按钮,不设置的话默认的确认按钮是第一个按钮 dialog.DefaultCommandIndex = 0; dialog.CancelCommandIndex = 1; //获取返回值 var result = await dialog.ShowAsync(); } }
另外可 申请使用受限制的功能
broadFileSystemAccess
参考:
https://docs.microsoft.com/zh-cn/windows/uwp/packaging/app-capability-declarations