如何在 Tizen Gear S2 本地文件系统上写入文本文件?
How to write text file on Tizen Gear S2 local file system?
我正在 Samsung Gear S2 上开发本机应用程序,旨在将设备上传感器(加速度计)的数据记录到本地文件系统中。
我尝试了目录 (/opt/usr/media/documents/text.txt
),但它没有在设备上创建文件。
我已启用权限:http://tizen.org/privilege/mediastorage。
下面的代码片段:
static char* write_file(const char* buf)
{
FILE *fp;
fp = fopen("/opt/usr/media/documents/text.txt","w");
fputs(buf,fp);
fclose(fp);
}
static void btn_write_cb(void *data, Evas_Object *obj, void *event_info)
{
appdata_s *ad = data;
buf="string to write";
write_file(buf);
}
write方法是做什么的?或者 Web 应用程序可以完成这项任务?
谢谢
- 在 Tizen 中即使使用
http://tizen.org/privilege/mediastorage
也无法在某处创建文件。首先尝试将文件写入您的应用程序绝对具有写入权限的 app_get_shared_data_path()
文件夹 (/opt/usr/apps/<your_app_package_name>/shared/data
)(可能是您的应用程序没有对 /opt/usr/media/
文件夹的写入权限)。
- 无论如何,如果文件的所有路径 (
/opt/usr/media/documents
) 都不存在(在我的 Gear S2 上,该路径上没有 "documents" 文件夹),您将无法创建文件。
也添加这些权限
<tizen:privilege name="http://tizen.org/privilege/filesystem.read"/>
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/>
也许您可以将路径更改为 /opt/usr/media/text.txt
并检查文件是否已创建。
Web 应用程序实际上非常适合此目的,下面是示例代码片段:
function fileStorage() {
var documentsDir, newFile;
function onOpenSuccess(fs) {
fs.write("This is gonna written into the file");
fs.close();
}
try {
tizen.filesystem.resolve('internal0', function(result) {
documentsDir = result;
newFile = documentsDir.createFile('filename.txt');
if (newFile) {
newFile.openStream('rw', onOpenSuccess, null, 'UTF-8');
}
});
} catch (e) {
console.log(e);
}
}
Web API 可能适用于这种情况。但是,如果您不想切换到 Web App Development,那么您可以尝试使用 Preference API。它将为您提供在共享内存中存储传感器数据并从中检索数据的便利。
您也可以通过以下链接详细了解如何使用首选项API。
希望有用。
我终于可以通过 Tizen Native App Development 在我的 Samsung Gear S2 Classic 中写入文件了。地址:/opt/usr/media/text.txt。并使用了特权http://tizen.org/privilege/mediastorage。这是我的代码片段。
static void
app_get_data(const char *res_file_in, char *res_path_out, int res_path_max)
{
char *res_path = NULL;
res_path= "/opt/usr/media/";
if (res_path)
{
snprintf(res_path_out, res_path_max, "%s%s", res_path, res_file_in);
//free(res_path); //Disabling this statement works for me.
}
}
static char*
write_file(const char* filepath, const char* buf)
{
FILE *fp;
fp = fopen(filepath, "w");
fputs(buf, fp);
fclose(fp);
}
static void
btn_write_cb(void *data, Evas_Object *obj, void *event_info)
{
appdata_s *ad = data;
char *buf = NULL;
buf="Hello";
char filepath[PATH_MAX] = { 0, };
app_get_data("text.txt", filepath, PATH_MAX);
write_file(filepath, buf);
}
我正在 Samsung Gear S2 上开发本机应用程序,旨在将设备上传感器(加速度计)的数据记录到本地文件系统中。
我尝试了目录 (/opt/usr/media/documents/text.txt
),但它没有在设备上创建文件。
我已启用权限:http://tizen.org/privilege/mediastorage。 下面的代码片段:
static char* write_file(const char* buf)
{
FILE *fp;
fp = fopen("/opt/usr/media/documents/text.txt","w");
fputs(buf,fp);
fclose(fp);
}
static void btn_write_cb(void *data, Evas_Object *obj, void *event_info)
{
appdata_s *ad = data;
buf="string to write";
write_file(buf);
}
write方法是做什么的?或者 Web 应用程序可以完成这项任务? 谢谢
- 在 Tizen 中即使使用
http://tizen.org/privilege/mediastorage
也无法在某处创建文件。首先尝试将文件写入您的应用程序绝对具有写入权限的app_get_shared_data_path()
文件夹 (/opt/usr/apps/<your_app_package_name>/shared/data
)(可能是您的应用程序没有对/opt/usr/media/
文件夹的写入权限)。 - 无论如何,如果文件的所有路径 (
/opt/usr/media/documents
) 都不存在(在我的 Gear S2 上,该路径上没有 "documents" 文件夹),您将无法创建文件。
也添加这些权限
<tizen:privilege name="http://tizen.org/privilege/filesystem.read"/>
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/>
也许您可以将路径更改为 /opt/usr/media/text.txt
并检查文件是否已创建。
Web 应用程序实际上非常适合此目的,下面是示例代码片段:
function fileStorage() {
var documentsDir, newFile;
function onOpenSuccess(fs) {
fs.write("This is gonna written into the file");
fs.close();
}
try {
tizen.filesystem.resolve('internal0', function(result) {
documentsDir = result;
newFile = documentsDir.createFile('filename.txt');
if (newFile) {
newFile.openStream('rw', onOpenSuccess, null, 'UTF-8');
}
});
} catch (e) {
console.log(e);
}
}
Web API 可能适用于这种情况。但是,如果您不想切换到 Web App Development,那么您可以尝试使用 Preference API。它将为您提供在共享内存中存储传感器数据并从中检索数据的便利。
您也可以通过以下链接详细了解如何使用首选项API。
希望有用。
我终于可以通过 Tizen Native App Development 在我的 Samsung Gear S2 Classic 中写入文件了。地址:/opt/usr/media/text.txt。并使用了特权http://tizen.org/privilege/mediastorage。这是我的代码片段。
static void
app_get_data(const char *res_file_in, char *res_path_out, int res_path_max)
{
char *res_path = NULL;
res_path= "/opt/usr/media/";
if (res_path)
{
snprintf(res_path_out, res_path_max, "%s%s", res_path, res_file_in);
//free(res_path); //Disabling this statement works for me.
}
}
static char*
write_file(const char* filepath, const char* buf)
{
FILE *fp;
fp = fopen(filepath, "w");
fputs(buf, fp);
fclose(fp);
}
static void
btn_write_cb(void *data, Evas_Object *obj, void *event_info)
{
appdata_s *ad = data;
char *buf = NULL;
buf="Hello";
char filepath[PATH_MAX] = { 0, };
app_get_data("text.txt", filepath, PATH_MAX);
write_file(filepath, buf);
}