0
点赞
收藏
分享

微信扫一扫

如何实现彩信保存文本用电子书可以正常打开

爱情锦囊 2023-03-12 阅读 77

1.MMS_SUPPORT = OBIGO_Q03C_MMS_V01    09A 

a. saui.c kal_bool download_from_mms = KAL_FALSE;

b. handleSlideMenuAction()case SMA_SLIDE_MENU_SAVE_TEXT_AS:download_from_mms = KAL_TRUE;

c. DLAgentPush.cmms_txt_header_check

static kal_bool mms_txt_header_check(const U16* path)

{

#define MAX_READ_LEN 3000

FS_HANDLE handler;

U8 ret;

U8 buffer_read[MAX_READ_LEN];

U8 *buffer1;

U8 *buffer2;

U16 len_utf8;

handler = FS_Open(path,FS_READ_ONLY);

memset(buffer_read,'\0',MAX_READ_LEN);

ret = FS_Read(handler,buffer_read,MAX_READ_LEN,NULL);

FS_Close(handler);

FS_Delete(path);

handler = FS_Open(path,FS_CREATE|FS_READ_WRITE);

len_utf8 = strlen(buffer_read);

buffer1 = OslMalloc(len_utf8+4);//3 byte for UTF8 flag and 1 byte for '\0'!

memset(buffer1,'\0',len_utf8);

buffer1[0] = 0xef;

buffer1[1] = 0xbb;

buffer1[2] = 0xbf;

buffer2 = buffer1 + 3;

memcpy(buffer2,buffer_read,len_utf8);

ret = FS_Write(handler,buffer1,len_utf8+3,NULL);

if (ret < 0)

return KAL_FALSE;

FS_Close(handler);

OslMfree(buffer1);

return KAL_TRUE;

}

d. DLAgent.cextern kal_bool download_from_mms;

e. mmi_da_push_filename_done

if (mmi_wcsicmp(filepath, item->filepath) != 0)

{

if (item->action == MMI_DA_SAVE_AS)

{

/*==================================================*/

if (download_from_mms)

{

mms_txt_encoding_convert(item->filepath);

download_from_mms = KAL_FALSE;

}

/*=============================================*/

if (item->filepath[0] == filepath[0]) /* The same drive */

2.MMS_SUPPORT = OBIGO_Q03C_MMS_V02 09B

1. MMSAppDataManager.cbool

kal_bool download_from_mms = MMI_FALSE;



2. srv_mms_save_object

ptr = (U16*) mmi_fmgr_util_get_fileext((S8*) object_info->file_name);

if (ptr != NULL)

{

/*=====================================================================*/

if ((strcmp(ptr,L"txt") == 0) && object_info->type != SRV_MMS_OBJECT_TYPE_ATTACHMENT)

download_from_mms = MMI_TRUE;

/*=====================================================================*/

mmi_ucs2cat((S8*) object_file, (S8*) L".");

mmi_ucs2ncat((S8*) object_file, (S8*) ptr, FMGR_MAX_EXT_LEN);

}

3. MmsInterfaceSrv.cbool

extern kal_bool download_from_mms;

4. MmsInterfaceSrv.cmms_txt_header_check

Static kal_bool mms_txt_header_check(const U16* path)

{

#define MAX_READ_LEN 3000

FS_HANDLE handler;

U8 ret;

U8 buffer_read[MAX_READ_LEN];

U8 *buffer1;

U8 *buffer2;

U16 len_utf8;

handler = FS_Open(path,FS_READ_ONLY);

memset(buffer_read,'\0',MAX_READ_LEN);

ret = FS_Read(handler,buffer_read,MAX_READ_LEN,NULL);

FS_Close(handler);

FS_Delete(path);

handler = FS_Open(path,FS_CREATE|FS_READ_WRITE);

len_utf8 = strlen(buffer_read);

buffer1 = OslMalloc(len_utf8+4);//3 byte for UTF8 flag and 1 byte for '\0'!

memset(buffer1,'\0',len_utf8);

buffer1[0] = 0xef;

buffer1[1] = 0xbb;

buffer1[2] = 0xbf;

buffer2 = buffer1 + 3;

memcpy(buffer2,buffer_read,len_utf8);

ret = FS_Write(handler,buffer1,len_utf8+3,NULL);

if (ret < 0)

return KAL_FALSE;

FS_Close(handler);

OslMfree(buffer1);

return KAL_TRUE;

}

5. srv_mms_save_object_file_callback()

media_file_path = mmi_umms_app_dtmgr_get_media_file_path();

/*===========================================================*/

if (mms_txt == MMI_TRUE)

{

mms_txt_header_check((S8*) media_file_path);

download_from_mms = MMI_FALSE;

}

/*============================================================*/

src_file_name = mmi_umms_app_dtmgr_get_src_file_name();



09A09Bmmi_ebr_frm_open_book_and_create_nfo_file(),09B__MMI_EBOOK_V2__EBOOK V0109A



1.09A09B EBOOK_V01

mmi_ebr_frm_open_book_and_create_nfo_file()

U8 header_check[3];

if (create_nfo_file)

{

MMI_TRACE(MMI_COMMON_TRC_G1_EBOOK,

MMI_EBOOK_FRM_OPEN_BOOK_AND_CREATE_NFO_FILE_GENERATE_NFO_FILE);

memset(&g_mmi_ebr_frm_curr_book_cntx_p->nfo_book_struct, 0x00, sizeof(mmi_ebr_frm_book_struct));



ReadRecord(NVRAM_EF_EBOOK_SETTINGS_LID, 1, &setting, NVRAM_EF_EBOOK_SETTING_SIZE, &error);

g_mmi_ebr_frm_curr_book_cntx_p->nfo_book_struct.settings = setting.common_settings;



if(FS_Read(file_hnd, header_check,3,NULL) == FS_NO_ERROR)//wyf

{

if(header_check[0] == 0xef && header_check[1] == 0xbb && header_check[2]==0xbf)

{

g_mmi_ebr_frm_curr_book_cntx_p->nfo_book_struct.settings.encoding_format = EBOOK_UTF8;

}

}

……

2.MMS_SUPPORT = OBIGO_Q03C_MMS_V02 09B

mmi_ebr_frm_open_book_and_create_nfo_file()

U8 header_check[3];

if (create_nfo_file)

{

memset(p_nfo_file, 0x00, sizeof(*p_nfo_file));

memcpy(&p_nfo_file->settings, p_book_setting, sizeof(srv_ebr_book_setting));

if (FS_Read(file_hnd, header_check,3,NULL) == FS_NO_ERROR)

{

if(header_check[0] == 0xef && header_check[1] == 0xbb && header_check[2]==0xbf)

{

p_nfo_file->settings.encoding_format = CHSET_UTF8;

}

}

举报

相关推荐

0 条评论