2

readAsArrayBuffer メソッドで mp3 ファイルを読み取るために、cordova-plugin-file を使用しています。20 MB 未満のファイルでは問題なく動作しますが、ファイルが大きいと、このエラーでアプリがクラッシュします。(横断歩道ブラウザを使用しています)

E/chromium( 3330): [ERROR:simple_index_file.cc(223)] Failed to write the temporary index file E/chromium( 3330): [ERROR:runtime_javascript_dialog_manager.cc(69)] Not implemented reached in virtual void xwalk::RuntimeJavaScriptDialogManager::ResetDialogState(content::WebContents*)

私は問題が何であるかについてとても混乱しています。問題の原因は xwalk または cordova-plugin-file ですか? このプラグインは 20 MB 未満のサイズのファイルしか読み取れないため、助けてください。

4

1 に答える 1

1

このバグの解決策を見つけました。Cordova-plugin-fileは、ネイティブから JavaScript に大量のデータを送信できないと思います。そこで私は Crosswalk Browser API から調査を試みましたが、それらがFile APIをサポートしていることを非常に嬉しく思います。次のvirtual rootような方法でAndroid ファイル システムに直接アクセスできます。EXTERNALCACHEDIRDOWNLOADS

function readFileAsArrayBuffer(storage, path, file) {
    xwalk.experimental.native_file_system.requestNativeFileSystem(storage,
    function (fs) {
       fs.root.getFile(storage + "/" + path + file, {create: false}, function (entry) {
           entry.file(function (file) {
                reader = new FileReader();
                reader.onloadend = function (data) {
                   //Data after read.
                };
                  reader.readAsArrayBuffer(file);
                },
            },
            function (e) {
              console.error("2-" + JSON.stringify(e))
            });
        },
        function (e) {
          console.error("3-" + JSON.stringify(e));
        });
}
//test
readFileAsArrayBuffer("EXTERNAL", "downloads/folder/", "file.mp3");
于 2015-10-26T16:00:09.830 に答える