现在的位置: 首页 > 综合 > 正文

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

2013年10月24日 ⁄ 综合 ⁄ 共 4512字 ⁄ 字号 评论关闭

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; 
   } 
  }

抱歉!评论已关闭.