0

私はWindows8AppStoreアプリケーション用のJSAPIを使用しようとしていました。基本的に、2つのボタンがあります。1つは関数create()を呼び出し、もう1つは関数open()を呼び出します。ファイルは正しく作成されていますが、外部アプリを起動して開く方法が想像できません。

このコードを考えると、主にMSDN Webサイトから取得されます...代わりに何を書く必要がありますか?

//アプリを起動してファイルを読み取る方法は?

ファイルが存在し、var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri);でその参照を取得できます。

しかし、Windows.System.Launcher.launchFileAsync(file)でさえ機能していません... :(何か助けはありますか?

ありがとう!!!

 function create() {

 {
        localFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting)
           .then(function (sampleFile) {
               var formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
               var timestamp = formatter.format(new Date());

               return Windows.Storage.FileIO.writeTextAsync(sampleFile, timestamp);
           }).done(function () {



           });
    }




        }


function open() {



    localFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {

          if (sampleFile) { console.log("it does exists") }

          return Windows.Storage.FileIO.readTextAsync(sampleFile);
      }).done(function (timestamp) {
          var uri = new Windows.Foundation.Uri('ms-appx:///dataFile.txt');
          var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri);
          //how to launch an app to read the file?
      }, function () {
          console.log("timestamp non trovato");
      });

}
4

1 に答える 1

2

ここでいくつかのことが起こっています:

  1. ローカルフォルダに使用されているファイルではなく、アプリケーションの一部であるファイルにURIスキームを使用しています。代わりにこれを使用してください

    var uri = new Windows.Foundation.Uri('ms-appdata:///local/dataFile.txt');
    
  2. getFileFromApplicationUriAsyncからのコールバックを使用する必要があります。次のことを試してください。

    localFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {
    
          if (sampleFile) { console.log("it does exists") }
    
          return Windows.Storage.FileIO.readTextAsync(sampleFile);
      }).done(function (timestamp) {
    
          var uri = new Windows.Foundation.Uri('ms-appdata:///local/dataFile.txt');
          Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).done(function(file)
          {
              Windows.System.Launcher.launchFileAsync(file);
    
  3. ここで実際にURIを作成する必要はありません。最初の「その後」で起動を行うことができます(ただし、そこでファイルを読んでいるので、意図がわかりません)。また、既存のファイルのチェックが正しくないことにも注意してください。ファイルが存在しない場合は、エラーハンドラコールバックをトリガーします。これをコンソールに出力するために以下に追加しました

    localFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {
               Windows.System.Launcher.launchFileAsync(sampleFile);
               return Windows.Storage.FileIO.readTextAsync(sampleFile);
           },
           function () { console.log("it does not exist"); })
      .done(function (timestamp) {
    
          // not sure what you want to do here
    
      }, function () {
          console.log("timestamp non trovato");
      }
    );});
    
于 2012-12-21T12:44:15.927 に答える