Acesso universal ao diretório / arquivo de aplicativos do Windows 10
Estou desenvolvendo um aplicativo que lê arquivos jpeg e pdf de um local configurável no sistema de arquivos. Atualmente, há uma versão em execução implementada no WPF e agora estou tentando mudar para os novos aplicativos universais do Windows.
O código a seguir funciona bem com o WPF:
public IList<string> GetFilesByNumber(string path, string number)
{
if (string.IsNullOrWhiteSpace(path))
throw new ArgumentNullException(nameof(path));
if (string.IsNullOrWhiteSpace(number))
throw new ArgumentNullException(nameof(number));
if (!Directory.Exists(path))
throw new DirectoryNotFoundException(path);
var files = Directory.GetFiles(path, "*" + number + "*",
SearchOption.AllDirectories);
if (files == null || files.Length == 0)
return null;
return files;
}
Ao usar o Universal Apps, tive alguns problemas:
Directory.Exists
não está disponívelComo posso ler em diretórios fora do meu armazenamento de aplicativos?Para ler de outro diretório fora do armazenamento do aplicativo, tentei o seguinte:
StorageFolder folder = StorageFolder.GetFolderFromPathAsync("D:\\texts\\");
var fileTypeFilter = new string[] { ".pdf", ".jpg" };
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);
queryOptions.UserSearchFilter = "142";
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = queryResult.GetFilesAsync().GetResults();
O problema é que não está funcionando, mas recebo uma exceção:
Ocorreu uma exceção do tipo 'System.UnauthorizedAccessException' no TextManager.Universal.DataAccess.dll, mas não foi tratada no código do usuário Informações adicionais: Acesso negado. (Exceção de HRESULT: 0x80070005 (E_ACCESSDENIED))
Eu sei que você precisa configurar algumas permissões no manifesto, mas não consigo encontrar uma adequada para operações de E / S do sistema de arquivos ...
Alguém também teve esses problemas / uma solução possível?
Solução: Das soluções que @Rico Suter me deu, escolhi o FutureAccessList em combinação com o FolderPicker. Também é possível acessar a entrada com o token após o reinício do programa.
Eu também posso recomendar oLinhas de orientação do UX e istoAmostra do Github.
Muito obrigado!