Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können nicht wesentliche Daten auf einer optionalen MicroSD-Karte speichern und darauf zugreifen, insbesondere auf kostengünstigen mobilen Geräten mit eingeschränktem internen Speicher und einem Steckplatz für eine SD-Karte.
In den meisten Fällen müssen Sie die RemovableStorage-Funktion in der App-Manifestdatei angeben, bevor Ihre App Dateien auf der SD-Karte speichern und darauf zugreifen kann. In der Regel müssen Sie sich auch registrieren, um den Dateityp zu behandeln, den Ihre App speichert und auf den sie zugreift.
Sie können Dateien auf der optionalen SD-Karte speichern und darauf zugreifen, indem Sie die folgenden Methoden verwenden:
- Dateiauswahl.
- Die Windows.Storage APIs.
Was Sie auf der SD-Karte zugreifen können und was nicht
Auf was Sie zugreifen können
- Ihre App kann nur Dateien von Dateitypen lesen und schreiben, die die App für die Verarbeitung in der App-Manifestdatei registriert hat.
- Ihre App kann auch Ordner erstellen und verwalten.
Auf was Sie nicht zugreifen können
- Ihre App kann systemordner und die darin enthaltenen Dateien nicht anzeigen oder darauf zugreifen.
- Ihre App kann keine Dateien sehen, die mit dem Attribut "Hidden" gekennzeichnet sind. Das Attribut "Hidden" wird in der Regel verwendet, um das Risiko des versehentlichen Löschens von Daten zu verringern.
- Ihre App kann die Dokumentbibliothek nicht anzeigen oder darauf zugreifen, indem sie KnownFolders.DocumentsLibraryverwenden. Sie können jedoch auf die Dokumentbibliothek auf der SD-Karte zugreifen, indem Sie das Dateisystem durchlaufen.
Überlegungen zu Sicherheit und Datenschutz
Wenn eine App Dateien an einem globalen Speicherort auf der SD-Karte speichert, werden diese Dateien nicht verschlüsselt, sodass sie in der Regel für andere Apps zugänglich sind.
- Während sich die SD-Karte auf dem Gerät befindet, sind Ihre Dateien für andere Apps zugänglich, die für die Verarbeitung desselben Dateityps registriert sind.
- Wenn die SD-Karte vom Gerät entfernt und von einem PC geöffnet wird, sind Ihre Dateien im Datei-Explorer sichtbar und für andere Apps zugänglich.
Wenn eine auf der SD-Karte installierte App Dateien in seinem LocalFolder speichert, werden diese Dateien jedoch verschlüsselt und sind nicht für andere Apps zugänglich.
Anforderungen für den Zugriff auf Dateien auf der SD-Karte
Um auf Dateien auf der SD-Karte zuzugreifen, müssen Sie in der Regel die folgenden Dinge angeben.
- Sie müssen die removableStorage--Funktion in der App-Manifest-Datei angeben.
- Sie müssen sich auch registrieren, um die Dateierweiterungen zu behandeln, die dem Medientyp zugeordnet sind, auf den Sie zugreifen möchten.
Verwenden Sie auch die beschriebene Methode, um auf Mediendateien auf der SD-Karte zuzugreifen, ohne sich auf einen bekannten Ordner wie KnownFolders.MusicLibraryzu beziehen, oder um auf Mediendateien zuzugreifen, die außerhalb der Ordner der Medienbibliothek gespeichert sind.
Um auf Mediendateien zuzugreifen, die in den Medienbibliotheken (Musik, Fotos oder Videos) mithilfe bekannter Ordner gespeichert sind, müssen Sie nur die zugehörige Funktion in der App-Manifestdatei angeben– musicLibrary, picturesLibrary oder videoLibrary. Sie müssen die Fähigkeit removableStorage nicht angeben. Weitere Informationen finden Sie unter "Dateien und Ordner" in den Bibliotheken "Musik", "Bilder" und "Videos".
Zugreifen auf Dateien auf der SD-Karte
Abrufen eines Verweises auf die SD-Karte
Der ordner KnownFolders.RemovableDevices ist der logische Stamm StorageFolder- für die Gruppe von Wechselmedien, die derzeit mit dem Gerät verbunden sind. Wenn eine SD-Karte vorhanden ist, stellt der erste (und nur) StorageFolder unter dem Ordner KnownFolders.RemovableDevices die SD-Karte dar.
Verwenden Sie Code wie der folgende, um zu bestimmen, ob eine SD-Karte vorhanden ist, und um einen Verweis darauf als StorageFolderzu erhalten.
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.
}
Hinweis
Wenn Ihr SD-Kartenleser ein eingebetteter Reader ist (z. B. ein Steckplatz im Laptop oder PC selbst), kann er nicht über KnownFolders.RemovableDevices zugänglich sein.
Abfragen des Inhalts der SD-Karte
Die SD-Karte kann viele Ordner und Dateien enthalten, die nicht als bekannte Ordner erkannt werden und nicht mithilfe eines Speicherorts aus KnownFolders abgefragt werden können. Um Dateien zu finden, muss Ihre App den Inhalt der Karte aufzählen, indem das Dateisystem rekursiv durchläuft. Verwenden Sie GetFilesAsync (CommonFileQuery.DefaultQuery) und GetFoldersAsync (CommonFolderQuery.DefaultQuery), um den Inhalt der SD-Karte effizient abzurufen.
Es wird empfohlen, dass Sie einen Hintergrundthread verwenden, um die SD-Karte zu durchsuchen. Eine SD-Karte kann viele Gigabyte an Daten enthalten.
Ihre App kann auch festlegen, dass der Benutzer bestimmte Ordner mithilfe der Ordnerauswahl auswählen kann.
Wenn Sie auf das Dateisystem auf der SD-Karte mit einem Pfad zugreifen, den Sie von KnownFolders.RemovableDevices abgeleitet haben, verhalten sich die folgenden Methoden wie folgt.
- Die GetFilesAsync--Methode gibt die Vereinigung der Dateierweiterungen zurück, die Sie für die Verarbeitung registriert haben, und die Dateierweiterungen, die allen von Ihnen angegebenen Medienbibliotheksfunktionen zugeordnet sind.
- Die GetFileFromPathAsync Methode schlägt fehl, wenn Sie sich nicht für die Verarbeitung der Dateierweiterung der Datei registriert haben, auf die Sie zugreifen möchten.
Identifizieren der einzelnen SD-Karte
Wenn die SD-Karte zum ersten Mal bereitgestellt wird, generiert das Betriebssystem einen eindeutigen Bezeichner für die Karte. Sie speichert diese ID in einer Datei im Ordner "WPSystem" im Stammverzeichnis der Karte. Eine App kann diese ID verwenden, um festzustellen, ob sie die Karte erkennt. Wenn eine App die Karte erkennt, kann die App möglicherweise bestimmte Vorgänge verschieben, die zuvor abgeschlossen wurden. Der Inhalt der Karte kann sich jedoch seit dem letzten Zugriff auf die Karte durch die App geändert haben.
Betrachten Sie beispielsweise eine App, die E-Books indiziert. Wenn die App zuvor die gesamte SD-Karte für E-Book-Dateien gescannt und einen Index der E-Books erstellt hat, kann die Liste sofort angezeigt werden, wenn die Karte erneut eingefügt wird und die App die Karte erkennt. Separat kann ein Hintergrundthread mit niedriger Priorität gestartet werden, um nach neuen E-Books zu suchen. Es kann auch einen fehlgeschlagenen Versuch beim Auffinden eines zuvor vorhandenen E-Books behandeln, wenn der Benutzer versucht, auf das gelöschte E-Book zuzugreifen.
Der Name der Eigenschaft, die diese ID enthält, ist 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.
}
}