Как сохранить данные с помощью Tizen

Пытаюсь разработать небольшое приложение на часы Самсунг (носимые 4.0). Идея очень проста, люди должны отвечать на вопрос каждый раз, когда открывают приложение. Вот базовый HTML-код:

<html>

<style>
h1 {color: white; font-family: courier new; font-size:150%; text-align: center; position: absolute; top: 5%; left: 14%}
body {background-color: SkyBlue;}
#button1 {font-size: 20px; color:white; position:absolute; top: 30%; left: 23%; width: 200px; height: 55px; background-color: black; border-color: black;}
#button2 {font-size: 20px; color:white; position:absolute; top: 70%; left: 23%; width: 200px; height: 55px; background-color: black; border-color: black;}
</style>

<body>
<h1>Es tu concentré <br> sur un élément extérieur?</h1>
<button id="button1" onclick="location.href = 'Third.html';">Mon attention est captée</button>
<button id="button2" onclick="location.href = 'Third.html';">Rien ne capte mon attention</button> 

</body>

</html>

В теле помещаю скрипт, в котором события (нажатие определенной кнопки) записываются в массив:

var data = [];

document.getElementById("button1").addEventListener("click", function(){
    date = new Date();
    data.push("Concentré");
    data.push(date);
    document.getElementById("demo").innerHTML = data;
    });

document.getElementById("button2").addEventListener("click", function(){
    date = new Date();
    data.push("Pas Concentré");
    data.push(date);
    document.getElementById("demo1").innerHTML = data;
    });

Наконец, я хотел бы сохранить данные переменных в текстовом файле, поэтому я копирую / трачу то, что нашел в документации Tizen:

var documentsDir; 
documentsDir.createFile("MWRecord.txt");
function onsuccess(files) {
  var testFile = documentsDir.createFile("test.txt");
  if (testFile != null) {
     testFile.openStream("w", function(fs) {
         fs.write(data);
         fs.close();
       });
   }
 };

 function onerror(error) {
   console.log("The error " + error.message + " occurred when listing the files in the selected folder");
 };
 
 tizen.filesystem.resolve(
   'documents',
   function(dir) {
     documentsDir = dir;
     dir.listFiles(onsuccess, onerror);
   });

Однако при попытке выполнить это с помощью эмулятора файл не создается. Кто-нибудь знает, как я могу создать файл, сохраняющий записанные события?

Спасибо большое за вашу помощь!!!

Hugues


person Hugues Lamothe    schedule 15.02.2021    source источник


Ответы (2)


вы установили привилегии? Если нет, вы должны установить

mediastorage

и

externalstorage

привилегии, чтобы приложение сохраняло файлы.

person Turksat46    schedule 15.02.2021

Первая проблема, которую я могу заметить, заключается в том, что ваш код использует undefined в качестве объекта во второй строке, что вызывает нарушение выполнения кода.

var documentsDir; 
documentsDir.createFile("MWRecord.txt");  /// documentsDir === undefined

Во-вторых, я не уверен, нужно ли вам вызывать listFiles () или это проблема с копированием и вставкой, в вашем описании я не нашел ответа, если это было намеренно.

Чтобы создать новый файл и заполнить его некоторыми данными, вам необходимо правильно обработать все асинхронные операции с помощью обратных вызовов:

tizen.filesystem.resolve(
    'documents',
    function (dir) {
        try {
            var testFile = dir.createFile("test.txt");
            testFile.openStream("w", function (fs) {
                fs.write("some data as a string");
                fs.close();
                // at this point your file is created and content is written
                console.log("Success")
            },
                function (e) {
                    // TODO handle openStream() errors here
                    console.log("openStream error occurrred " + JSON.stringify(e));
                });
        } catch (e) {
            // TODO handle createFile() errors here
            console.log("createFile error occurrred " + JSON.stringify(e));
        }
    },
    function (e) {
        // TODO handle resolve() errors here
        console.log("resolve error occurrred " + JSON.stringify(e));
    });
person 15kokos    schedule 16.02.2021