如何在Windows应用商店/ WinJS应用程序中处理文件激活

时间:2013-10-05 06:55:16

标签: javascript windows-store-apps 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. 如果将应用程序作为启动方式传递给该文件。
  4. 即使在这种情况下数字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.
    

    我已经将我的应用包清单设置为已接受txt文件。

1 个答案:

答案 0 :(得分:2)

StorageFileStorageFile会在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.
            });
        }
    }

    // ...
}