Доступ к SD-карте
Не очень важные данные можно хранить на дополнительной карте microSD и там же осуществлять доступ к ним, это особенно актуально на недорогих мобильных устройствах с ограниченным объемом внутренней памяти и слотом для SD-карты.
В большинстве случаев необходимо указать возможность съемных служба хранилища в файле манифеста приложения, прежде чем приложение сможет хранить и получать доступ к файлам в SD-карта. Как правило, вам также нужно зарегистрировать для обработки типов файлов, к которым хранится приложение и к которым осуществляется доступ.
Вы можете хранить и получать доступ к файлам на необязательных карта SD с помощью следующих методов:
- Средства выбора файлов.
- Windows.служба хранилища Api.
Что вы можете и не можете получить доступ к sd карта
Доступ к чему можно получить
- Приложение может только считывать и записывать файлы типов файлов, зарегистрированных приложением для обработки в файле манифеста приложения.
- Приложение также может создавать папки и управлять ими.
К чему вы не можете получить доступ
- Приложение не может видеть системные папки и файлы, содержащиеся в них, или получать доступ к ним.
- Приложение не может видеть файлы, помеченные атрибутом Hidden. Скрытый атрибут обычно используется для уменьшения риска случайного удаления данных.
- Приложение не может видеть или получать доступ к библиотеке документов с помощью KnownFolders.DocumentsLibrary. Однако вы можете получить доступ к библиотеке документов в SD-карта путем обхода файловой системы.
Вопросы безопасности и конфиденциальности
Когда приложение сохраняет файлы в глобальном расположении в SD карта, эти файлы не шифруются, поэтому они обычно доступны другим приложениям.
- Хотя sd карта находится на устройстве, файлы доступны другим приложениям, зарегистрированным для обработки того же типа файла.
- Когда sd карта удаляется с устройства и открывается с компьютера, файлы отображаются в проводник и доступны для других приложений.
Если приложение, установленное в SD-карта, сохраняет файлы в локальной папке, однако эти файлы шифруются и недоступны для других приложений.
Требования к доступу к файлам в КАРТА SD
Чтобы получить доступ к файлам на карта SD, обычно необходимо указать следующие моменты.
- Необходимо указать съемные служба хранилища возможности в файле манифеста приложения.
- Кроме того, необходимо зарегистрировать расширения файлов, связанные с типом носителя, к которому требуется получить доступ.
Используйте приведенный выше метод, чтобы получить доступ к файлам мультимедиа в SD-карта без ссылки на известную папку, например KnownFolders.MusicLibrary, или получить доступ к файлам мультимедиа, хранящимся вне папок библиотеки мультимедиа.
Чтобы получить доступ к файлам мультимедиа, хранящимся в библиотеках мультимедиа ( музыка, фотографии или видео), с помощью известных папок необходимо указать только связанную возможность в файле манифеста приложения — musicLibrary, picturesLibrary или videoLibrary. Не нужно указывать съемные служба хранилища возможности. Дополнительные сведения см. в разделе "Файлы и папки" в библиотеках "Музыка", "Рисунки" и "Видео".
Доступ к файлам в SD-карта
Получение ссылки на SD-карта
Папка KnownFolders.RemovableDevices является логическим корнем служба хранилища Folder для набора съемных устройств, подключенных к устройству. Если карта SD присутствует, первый (и только) служба хранилища Folder под папкой KnownFolders.RemovableDevices представляет карта SD.
Используйте следующий код, чтобы определить, присутствует ли карта SD и получить ссылку на нее в виде служба хранилища Folder.
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.
}
Примечание.
Встроенное устройство чтения SD-карт (например, слот на ноутбуке или ПК) может быть недоступным через KnownFolders.RemovableDevices.
Запрос содержимого sd карта
Sd карта может содержать множество папок и файлов, которые не распознаются как известные папки и не могут запрашиваться с помощью расположения из KnownFolders. Чтобы найти файлы, приложение должен перечислить содержимое карта путем рекурсивного обхода файловой системы. Используйте GetFilesAsync (CommonFileQuery.DefaultQuery) и GetFoldersAsync (CommonFolderQuery.DefaultQuery), чтобы эффективно получить содержимое SD-карта.
Рекомендуется использовать фоновый поток для обхода карта SD. Карта SD может содержать много гигабайт данных.
Приложению также может потребоваться, чтобы пользователь выбрал определенные папки с помощью средства выбора папок.
При доступе к файловой системе в SD-карта с путем, производным от KnownFolders.RemovableDevices, следующие методы ведут себя следующим образом.
- Метод GetFilesAsync возвращает объединение расширений файлов, зарегистрированных для обработки и расширений файлов, связанных с указанными возможностями библиотеки мультимедиа.
- Метод GetFileFromPathAsync завершается ошибкой, если вы не зарегистрировали для обработки расширения файла, к который вы пытаетесь получить доступ.
Определение отдельных карта SD
При первом подключении карта SD операционная система создает уникальный идентификатор для карта. Он сохраняет этот идентификатор в файле в папке WPSystem в корне карта. Приложение может использовать этот идентификатор, чтобы определить, распознает ли он карта. Если приложение распознает карта, приложение может отложить определенные операции, выполненные ранее. Однако содержимое карта, возможно, изменилось с момента последнего доступа к карта приложением.
Например, рассмотрим приложение, которое индексирует электронные книги. Если приложение ранее сканировало весь SD-карта для файлов электронных книг и создало индекс электронных книг, оно может отобразить список сразу же, если карта повторно включено, и приложение распознает карта. Отдельно он может запустить фоновый поток с низким приоритетом для поиска новых электронных книг. Он также может справиться с ошибкой поиска электронной книги, которая существовала ранее, когда пользователь пытается получить доступ к удаленной электронной книге.
Имя свойства, содержащего этот идентификатор, — Windows Телефон. External служба хранилища Id.
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.
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по