首页 > 解决方案 > Tizen SDK 2.3.1 的 Tizen Wearable Web Widget App 数据路径中的文件管理

问题描述

我正在为 Samsung Gear Fit2 Pro 开发一个混合 tizen 应用程序(网络 + 本地服务)。我想从 web ui 应用程序创建/设置一个配置并将其保存到应用程序的数据路径中,以便本机服务可以加载配置并使用它。
我正在尝试config.txt从 tizen 网络应用程序创建一个文件/opt/usr/apps/pkg-id/data。我尝试过使用具有适当权限的 tizen 文件系统 API,但它总是显示这些 API 函数未定义。但是,如果我使用解析,则文件创建仅适用于某些目录,例如documents. 但是如果我的应用程序的数据文件夹中不存在,我想创建一个文件,/opt/usr/apps/pkg-id/data或者如果已经存在则修改它。我的代码中尝试写入数据文件夹中文件的相关部分如下所示。
有没有办法做到这一点?或者我在使用文件系统 api 时做错了什么?

function app_get_datapath() {
    return "/opt/usr/apps/"+tizen.application.getCurrentApplication().appInfo.packageId+"/data/";
}

var fileHandleWrite = tizen.filesystem.openFile(app_get_datapath()+'config.txt', 'w');
fileHandleWrite.writeString(tizen.systeminfo.getCapability('http://tizen.org/system/tizenid'));
fileHandleWrite.close();

以下是特权列表:
在此处输入图像描述

标签: javascripttizentizen-web-apptizen-wearable-sdk

解决方案


我尝试过使用具有适当权限的 tizen 文件系统 API,但它总是显示这些 API 函数未定义。

Samsung Gear Fit2 Pro 不支持所有新的 API。可能您应该参考Tizen 3.0 API,但您在代码片段中使用的 API从 Tizen 5.0 开始支持

我的第二条评论是,您不应像在 app_get_datapath() 中那样使用通过字符串连接“手动”构建的路径。它是高度非便携的解决方案,无法在某些设备上运行。相反,我建议使用内置虚拟根来获取您的应用程序私有存储 - wgt-private,它将自动返回设备上的有效路径(无论设备是什么)。

示例(仅使用 3.0 API,对于 5.0 会容易得多):

(function createConfig() {
    function writeConfig(file) {
        file.openStream('w', function (stream) {
            stream.write(tizen.systeminfo.getCapability('http://tizen.org/system/tizenid'));
            stream.close();
            console.log('All done!!')
        })
    }

    tizen.filesystem.resolve("wgt-private/config.txt", function (file) {
        console.log('Config file exists - overwrite');
        writeConfig(file);
    }, function (e) {
        console.log('Config file does not exist - create');
        tizen.filesystem.resolve("wgt-private", function (dir) {
            var file = dir.createFile("config.txt");
            console.log("Created file")
            writeConfig(file);
        });
});
})()

推荐阅读