Как получить путь из приложения Windows 8 Photos в качестве цели общего доступа?

Когда я пытаюсь получить путь от IStorageItems, переданного мне из вызова GetStorageItemsAsync() Share Target при совместном использовании из приложения Windows 8 Photos, свойство Path для всех возвращаемых элементов становится пустым. Имя (имя файла) заполнено правильно. Однако мне нужен реальный Путь, и, похоже, нет способа его получить.

Это ошибка в приложении Photos для Windows 8 или я что-то не так делаю?

Мой код для получения списка товаров:

this.sharedStorageItems = await this.shareOperation.Data.GetStorageItemsAsync();

Мой код для перебора списка:

// Display the name of the files being shared.
var files = new List<String>();
for (int index = 0; index < this.sharedStorageItems.Count; index++)
    files.Add(String.Concat(this.sharedStorageItems[index].Path, "\\", this.sharedStorageItems[index].Name));

Путь выше всегда пуст.

3 ответа

Решение

Похоже, IStorageItem просто базовый класс. Что действительно возвращается, так это IStorageFile, который включает базовый поток временного файла, созданного как часть процесса общего доступа.

Итак, приведите IStorageItem к IStorageFile, и вы будете в хорошей форме для работы с возвращенными файлами.

Вы уверены, что вам нужен путь? Там нет никакой гарантии, что вы можете получить доступ к самим файлам. Например, если у вас нет доступа к библиотеке фотографий, вы не можете получить доступ к физическим изображениям там. Если у вас нет доступа к Интернету, вы не сможете получить доступ к тем, которые приходят из Facebook и Flickr. Некоторые могут также поступать из SkyDrive, и вы можете просто не иметь прямого доступа к ним.

Некоторые приложения могут генерировать изображения на лету, просто создавая StorageItem с результатами.

StorageItem предназначен для отвлечения вас от этого. Вы получаете фактические файлы, которыми делятся, а не некоторые другие косвенные.

Вы также можете проверить настройки общего ресурса через учетную запись Windows. Может быть гораздо проще решить вашу проблему.

Другие вопросы по тегам