Как обрабатывать активацию файлов в приложениях Windows Store/WinJS

Я пытаюсь заставить приложение текстового редактора обрабатывать запуск файла. У Microsoft есть пример того, как это сделать здесь:

http://msdn.microsoft.com/en-us/library/windows/apps/hh452684.aspx

К сожалению, он останавливается в момент получения файла и не дает никакой информации о том, как на самом деле открыть указанный файл.

Я могу успешно обработать активированное событие и получить абсолютный путь к файлу. Например,

C:\Users\Rory\Documents\test.txt

Приложения Metro не имеют разрешения на доступ к абсолютным путям, за исключением определенных условий.

  1. если файл выбран пользователем через средство выбора файлов
  2. если приложение ранее обращалось к файлу и путь был сохранен в Windows.Storage.AccessCache
  3. если приложению передается файл в качестве запуска.

Несмотря на то, что в этом случае применяется номер 3, я не могу открыть файл.

Я пробовал Windows.Storage.StorageFile.getFileFromPathAsync(path_to_file), но получаю эту ошибку

0x80070005 - JavaScript runtime error: Access is denied.

WinRT information: Cannot access the specified file or folder (඀6). 
The item is not in a location that the application has access to (including 
application data folders, folders that are accessible via capabilities 
and persisted items in the StorageApplicationPermissions lists). Verify 
that the file is not marked with system or hidden file attributes.

Я уже настроил манифест пакета приложения для приема текстовых файлов.


person roryok    schedule 05.10.2013    source источник


Ответы (1)


StorageFile или StorageFile передаются вашему приложению в аргументе WebUIFileActivatedEventArgs. Попробуй это:

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.file) {
        if (args.detail.files.size > 0) {
            var storageFile = args.detail.files[0];
            Windows.Storage.FileIO.readTextAsync(storageFile).then(function (text) {
                // Do something with the content of the file.
            });
        }
    }

    // ...
} 
person kiewic    schedule 05.10.2013