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