Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode armazenar e acessar dados não essenciais em um cartão microSD opcional, especialmente em dispositivos móveis de baixo custo que têm armazenamento interno limitado e têm um slot para um cartão SD.
Na maioria dos casos, você precisa especificar o recurso removableStorage no arquivo de manifesto do aplicativo antes que seu aplicativo possa armazenar e acessar arquivos no cartão SD. Normalmente, você também precisa se registrar para lidar com o tipo de arquivos que seu aplicativo armazena e acessa.
Você pode armazenar e acessar arquivos no cartão SD opcional usando os seguintes métodos:
- Seletores de arquivos.
- O Windows.Storage APIs.
O que você pode e não pode acessar no cartão SD
O que pode acessar
- A sua aplicação só pode ler e escrever ficheiros dos tipos de ficheiro que a aplicação registou para manipular no ficheiro de manifesto da aplicação.
- Seu aplicativo também pode criar e gerenciar pastas.
Aquilo a que não pode aceder
- Seu aplicativo não pode ver ou acessar as pastas do sistema e os arquivos que elas contêm.
- Seu aplicativo não consegue ver os arquivos marcados com o atributo Oculto. O atributo Hidden é normalmente usado para reduzir o risco de excluir dados acidentalmente.
- Seu aplicativo não pode ver ou acessar a biblioteca de Documentos usando KnownFolders.DocumentsLibrary. No entanto, você pode acessar a biblioteca de documentos no cartão SD atravessando o sistema de arquivos.
Considerações de segurança e privacidade
Quando uma aplicação guarda ficheiros numa localização global no cartão SD, esses ficheiros não são encriptados, pelo que normalmente são acessíveis a outras aplicações.
- Enquanto o cartão SD estiver no dispositivo, seus arquivos serão acessíveis a outros aplicativos que se registraram para lidar com o mesmo tipo de arquivo.
- Quando o cartão SD é removido do dispositivo e aberto a partir de um PC, os seus ficheiros ficam visíveis no Explorador de Ficheiros e acessíveis a outras aplicações.
No entanto, quando uma aplicação instalada no cartão SD guarda ficheiros no seu LocalFolder, esses ficheiros são encriptados e não são acessíveis a outras aplicações.
Requisitos para aceder a ficheiros no cartão SD
Para acessar arquivos no cartão SD, normalmente você tem que especificar as seguintes coisas.
- Você precisa especificar o recurso removableStorage no arquivo de manifesto do aplicativo.
- Você também precisa se registrar para lidar com as extensões de arquivo associadas ao tipo de mídia que você deseja acessar.
Use o método anterior também para acessar arquivos de mídia no cartão SD sem fazer referência a uma pasta conhecida, como KnownFolders.MusicLibrary, ou para acessar arquivos de mídia armazenados fora das pastas da biblioteca de mídia.
Para aceder a ficheiros multimédia armazenados nas bibliotecas multimédia — Música, Fotografias ou Vídeos — utilizando pastas conhecidas, só tem de especificar a funcionalidade associada no ficheiro de manifesto da aplicação —musicLibrary, picturesLibraryou videoLibrary. Não é necessário especificar a capacidade armazenamento removível. Para mais informações, consulte Ficheiros e pastas nas bibliotecas de Música, Imagens e Vídeos.
Aceder a ficheiros no cartão SD
Obter uma referência ao cartão SD
A pasta KnownFolders.RemovableDevices é a raiz lógica StorageFolder para o conjunto de dispositivos removíveis atualmente ligados ao sistema. Se um cartão SD estiver presente, a primeira (e única)
Use um código como o seguinte para determinar se um cartão SD está presente e para obter uma referência a ele como um StorageFolder.
using Windows.Storage;
// Get the logical root folder for all external storage devices.
StorageFolder externalDevices = Windows.Storage.KnownFolders.RemovableDevices;
// Get the first child folder, which represents the SD card.
StorageFolder sdCard = (await externalDevices.GetFoldersAsync()).FirstOrDefault();
if (sdCard != null)
{
// An SD card is present and the sdCard variable now contains a reference to it.
}
else
{
// No SD card is present.
}
Observação
Se o leitor de cartões SD for um leitor incorporado (por exemplo, uma ranhura no próprio portátil ou PC), poderá não estar acessível através de KnownFolders.RemovableDevices.
Consultando o conteúdo do cartão SD
O cartão SD pode conter muitas pastas e arquivos que não são reconhecidos como pastas conhecidas e não podem ser consultados usando um local de KnownFolders. Para localizar arquivos, seu aplicativo precisa enumerar o conteúdo do cartão atravessando o sistema de arquivos recursivamente. Use GetFilesAsync (CommonFileQuery.DefaultQuery) e GetFoldersAsync (CommonFolderQuery.DefaultQuery) para obter o conteúdo do cartão SD de forma eficiente.
Recomendamos que você use um thread de plano de fundo para atravessar o cartão SD. Um cartão SD pode conter muitos gigabytes de dados.
Seu aplicativo também pode exigir que o usuário escolha pastas específicas usando o seletor de pastas.
Quando você acessa o sistema de arquivos no cartão SD com um caminho derivado de KnownFolders.RemovableDevices, os seguintes métodos se comportam da seguinte maneira.
- O GetFilesAsync método retorna a união das extensões de arquivo que você registrou para manipular e as extensões de arquivo associadas a quaisquer recursos de biblioteca de mídia que você especificou.
- O método GetFileFromPathAsync falhará se você não tiver se registrado para manipular a extensão de arquivo do arquivo que está tentando acessar.
Identificação do cartão SD individual
Quando o cartão SD é montado pela primeira vez, o sistema operacional gera um identificador exclusivo para o cartão. Ele armazena esse ID em um arquivo na pasta WPSystem na raiz do cartão. Um aplicativo pode usar essa ID para determinar se reconhece o cartão. Se um aplicativo reconhecer o cartão, o aplicativo poderá adiar determinadas operações que foram concluídas anteriormente. No entanto, o conteúdo do cartão pode ter mudado desde que o cartão foi acessado pela última vez pelo aplicativo.
Por exemplo, considere um aplicativo que indexa ebooks. Se o aplicativo já escaneou todo o cartão SD para arquivos de ebook e criou um índice dos ebooks, ele pode exibir a lista imediatamente se o cartão for reinserido e o aplicativo reconhecer o cartão. Separadamente, ele pode iniciar um thread em segundo plano de baixa prioridade para procurar novos ebooks. Ele também pode lidar com uma falha em encontrar um ebook que existia anteriormente quando o usuário tenta acessar o ebook excluído.
O nome da propriedade que contém essa ID é WindowsPhone.ExternalStorageId.
using Windows.Storage;
// Get the logical root folder for all external storage devices.
StorageFolder externalDevices = Windows.Storage.KnownFolders.RemovableDevices;
// Get the first child folder, which represents the SD card.
StorageFolder sdCard = (await externalDevices.GetFoldersAsync()).FirstOrDefault();
if (sdCard != null)
{
var allProperties = sdCard.Properties;
IEnumerable<string> propertiesToRetrieve = new List<string> { "WindowsPhone.ExternalStorageId" };
var storageIdProperties = await allProperties.RetrievePropertiesAsync(propertiesToRetrieve);
string cardId = (string)storageIdProperties["WindowsPhone.ExternalStorageId"];
if (...) // If cardID matches the cached ID of a recognized card.
{
// Card is recognized. Index contents opportunistically.
}
else
{
// Card is not recognized. Index contents immediately.
}
}