Lezen in het Engels

Delen via


Toegang tot de SD-kaart

U kunt niet-essentiële gegevens opslaan en openen op een optionele microSD-kaart, met name op goedkope mobiele apparaten met beperkte interne opslag en een sleuf voor een SD-kaart hebben.

In de meeste gevallen moet u de verwisselbareStorage mogelijkheid opgeven in het manifestbestand van de app voordat uw app bestanden op de SD-kaart kan opslaan en openen. Doorgaans moet u zich ook registreren om het type bestanden te verwerken dat door uw app wordt opgeslagen en geopend.

U kunt bestanden opslaan en openen op de optionele SD-kaart met behulp van de volgende methoden:

Wat u wel en niet kunt openen op de SD-kaart

Waartoe u toegang hebt

  • Uw app kan alleen bestanden lezen en schrijven van bestandstypen die de app heeft geregistreerd voor verwerking in het manifestbestand van de app.
  • Uw app kan ook mappen maken en beheren.

Waartoe u geen toegang hebt

  • Uw app kan systeemmappen en de bestanden die ze bevatten niet zien of openen.
  • Uw app kan geen bestanden zien die zijn gemarkeerd met het kenmerk Verborgen. Het kenmerk Verborgen wordt meestal gebruikt om het risico te verminderen dat gegevens per ongeluk worden verwijderd.
  • Uw app kan de documentbibliotheek niet zien of openen met behulp van KnownFolders.DocumentsLibrary. U hebt echter toegang tot de documentbibliotheek op de SD-kaart door het bestandssysteem te doorlopen.

Beveiligings- en privacyoverwegingen

Wanneer een app bestanden opslaat op een globale locatie op de SD-kaart, worden deze bestanden niet versleuteld, zodat ze doorgaans toegankelijk zijn voor andere apps.

  • Terwijl de SD-kaart zich op het apparaat bevindt, zijn uw bestanden toegankelijk voor andere apps die zijn geregistreerd om hetzelfde bestandstype te verwerken.
  • Wanneer de SD-kaart wordt verwijderd van het apparaat en wordt geopend vanaf een pc, zijn uw bestanden zichtbaar in Verkenner en toegankelijk voor andere apps.

Wanneer een app op de SD-kaart is geïnstalleerd, worden bestanden opgeslagen in de LocalFolder-. Deze bestanden zijn echter versleuteld en zijn niet toegankelijk voor andere apps.

Vereisten voor toegang tot bestanden op de SD-kaart

Voor toegang tot bestanden op de SD-kaart moet u meestal de volgende dingen opgeven.

  1. U moet de verwisselbare opslag mogelijkheid opgeven in het manifestbestand van de app.
  2. U moet zich ook registreren voor het afhandelen van de bestandsextensies die zijn gekoppeld aan het type media dat u wilt openen.

Gebruik de voorgaande methode ook voor toegang tot mediabestanden op de SD-kaart zonder te verwijzen naar een bekende map zoals KnownFolders.MusicLibrary, of om toegang te krijgen tot mediabestanden die buiten de mappen van de mediabibliotheek zijn opgeslagen.

Voor toegang tot mediabestanden die zijn opgeslagen in de mediabibliotheken( Muziek, Foto's of Video's) met behulp van bekende mappen, hoeft u alleen de bijbehorende mogelijkheid op te geven in het manifestbestand van de app:musicLibrary, picturesLibraryof videoLibrary. U hoeft de verwisselbare opslagmogelijkheid niet op te geven. Zie Bestanden en mappen in de bibliotheken Muziek, Afbeeldingen en Video'svoor meer informatie.

Toegang tot bestanden op de SD-kaart

Een verwijzing naar de SD-kaart verkrijgen

De map KnownFolders.RemovableDevices is de logische hoofdmap StorageFolder voor de set verwisselbare apparaten die momenteel zijn verbonden met het apparaat. Als er een SD-kaart aanwezig is, vertegenwoordigt de eerste (en enige) StorageFolder onder de map KnownFolders.RemovableDevices de SD-kaart.

Gebruik code zoals de volgende om te bepalen of een SD-kaart aanwezig is en om er een verwijzing naar te krijgen als een 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.
}

Notitie

Als uw SD-kaartlezer een ingesloten lezer is (bijvoorbeeld een sleuf op de laptop of pc zelf), is deze mogelijk niet toegankelijk via KnownFolders.RemovableDevices.

De inhoud van de SD-kaart opvragen

De SD-kaart kan veel mappen en bestanden bevatten die niet worden herkend als bekende mappen en kunnen niet worden opgevraagd met behulp van een locatie uit KnownFolders. Om bestanden te vinden, moet uw app de inhoud van de kaart inventariseren door recursief door het bestandssysteem te gaan. Gebruik GetFilesAsync (CommonFileQuery.DefaultQuery) en GetFoldersAsync (CommonFolderQuery.DefaultQuery) om de inhoud van de SD-kaart efficiënt op te halen.

We raden aan een achtergrondthread te gebruiken om de SD-kaart te scannen. Een SD-kaart kan veel gigabytes aan gegevens bevatten.

Uw app kan ook vereisen dat de gebruiker specifieke mappen kiest met behulp van de mapkiezer.

Wanneer u het bestandssysteem op de SD-kaart opent met een pad dat u hebt afgeleid van KnownFolders.RemovableDevices, gedragen de volgende methoden zich op de volgende manier.

  • De methode GetFilesAsync retourneert de samenvoeging van de bestandsextensies die u hebt geregistreerd voor het verwerken en de bestandsextensies die zijn gekoppeld aan de mogelijkheden van een mediabibliotheek die u hebt opgegeven.
  • De GetFileFromPathAsync-methode mislukt als u niet bent geregistreerd voor het afhandelen van de bestandsextensie van het bestand dat u probeert te openen.

De afzonderlijke SD-kaart identificeren

Wanneer de SD-kaart voor het eerst wordt gekoppeld, genereert het besturingssysteem een unieke id voor de kaart. Deze id wordt opgeslagen in een bestand in de map WPSystem in de hoofdmap van de kaart. Een app kan deze id gebruiken om te bepalen of de kaart wordt herkend. Als een app de kaart herkent, kan de app bepaalde bewerkingen die eerder zijn voltooid, mogelijk uitstellen. De inhoud van de kaart kan echter zijn gewijzigd sinds de kaart voor het laatst is geopend door de app.

Denk bijvoorbeeld aan een app die ebooks indexeert. Als de app eerder de hele SD-kaart voor ebookbestanden heeft gescand en een index van de ebooks heeft gemaakt, kan de lijst onmiddellijk worden weergegeven als de kaart opnieuw wordt geplaatst en de app de kaart herkent. Afzonderlijk kan er een achtergrondthread met lage prioriteit worden gestart om te zoeken naar nieuwe ebooks. Het kan ook een fout afhandelen bij het vinden van een e-book dat eerder bestond toen de gebruiker toegang probeert te krijgen tot het verwijderde ebook.

De naam van de eigenschap die deze id bevat, is 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.
    }
}