Tizen не может записать файл в собственном приложении

Я следую этому примеру: https://stackoverflow.com/a/41713258/2330482

Однако файл не может быть прочитан после перезапуска приложения, поэтому я проверил в диспетчере устройств - папка не отображается в /opt/usr/home/owner/apps_rw/org.example.basicui/data/. Я cdd в каталог .basicui и ls - l дает

sh-3.2$ cd apps_rw                                                             
sh-3.2$ cd org.example.basicui
sh-3.2$ ls -l
ls: cannot access cache: Permission denied
ls: cannot access data: Permission denied
total 8
lrwxrwxrwx 1 app_fw app_fw   60 Sep  2 21:31 author-signature.xml -> /opt/usr/globalapps/org.example.basicui/author-signature.xml
lrwxrwxrwx 1 app_fw app_fw   43 Sep  2 21:31 bin -> /opt/usr/globalapps/org.example.basicui/bin
d????????? ? ?      ?         ?            ? cache
d????????? ? ?      ?         ?            ? data
lrwxrwxrwx 1 app_fw app_fw   43 Sep  2 21:31 lib -> /opt/usr/globalapps/org.example.basicui/lib
lrwxrwxrwx 1 app_fw app_fw   43 Sep  2 21:31 res -> /opt/usr/globalapps/org.example.basicui/res
drwxr-xr-x 3 owner  users  4096 Sep  2 21:31 shared
lrwxrwxrwx 1 app_fw app_fw   58 Sep  2 21:31 tizen-manifest.xml -> /opt/usr/globalapps/org.example.basicui/tizen-manifest.xml
sh-3.2$ whoami
owner

мой код следующий:

char* get_write_filepath(char *filename)
{

    char write_filepath[1000] = {0,};
    char *resource_path = app_get_data_path(); // get the application data directory path
    if(resource_path)
    {
        snprintf(write_filepath,1000,"%s%s",resource_path,filename);
        free(resource_path);
    }

    return write_filepath;
}

static char* write_file(const char* filepath, const char* buf)
{

    FILE *fp;
    fp = fopen(filepath,"w");
    fputs(buf,fp);
    fclose(fp);

    dlog_print(DLOG_DEBUG, "AAAMYTAG", "written");

}


void saveExampleFile() {
    dlog_print(DLOG_DEBUG, "AAAMYTAG", "save example file");

            char *filepath;
            filepath=get_write_filepath("d.txt");
            write_file(filepath,"TEST");
}

static void //B Button
    btn_go_cb(void *data, Evas_Object *obj, void *event_info)
    {
        dlog_print(DLOG_INFO, "AAAMYTAG", "GO successful.");

        saveExampleFile();
}

Где я ошибаюсь? Разве папка data не должна быть постоянной? Может это ошибка эмулятора?


person user2330482    schedule 02.09.2019    source источник


Ответы (2)


Вы установили разрешения в config.xml? Думаю, вам нужно: tizen: Privilege name = "http://tizen.org/privilege/filesystem.read" tizen: Privilege name = "http://tizen.org/privilege/filesystem.write"

person Draupner    schedule 03.09.2019
comment
Спасибо, но они недоступны в собственных приложениях. У меня mediastorage, externalstorage.appdata и externalstorage - person user2330482; 04.09.2019

Проблема заключалась в Run configurations (рядом с кнопкой запустить воспроизведение) -> «Включить режим обновления».

Это заставляет данные сохраняться и по умолчанию отключено. Позвольте этому проникнуть. Вместо того, чтобы сохранять данные при запуске и просто удалять установленное приложение, когда вы хотите, чтобы оно было удалено, Samsung по умолчанию использует удалить данные и разрешить сохранение данных. Это, безусловно, самая нелепая ОС для работы. Я никогда не пойму намерения, стоящие за этим, а также необходимость использовать C и C ++ вместо надлежащего языка высокого уровня. Неудивительно, что для Tizen нет приложений.

person user2330482    schedule 04.09.2019