将联系人导出到T-Card:将存放在手机、sim卡上的联系人导出到T-Card,以.cvs文件存放 主要思路: 1、判断是否存在T-Card,及T-Card中是否存在足够的空间用于存储当前的联系人,是否在USB状态,电话本是否准备好 if (mmi_usb_is_in_mass_storage_mode())//判断是否处于USB连接状态 if (mmi_phb_check_ready(MMI_TRUE))//检查电话本是否准备好 kal_wsprintf((U16*)temp_object,"%c:\\",SRV_FMGR_CARD_DRV);//T-Card盘符 fs_ret = FS_GetDiskInfo((PU16)temp_object, &disk_info, FS_DI_BASIC_INFO | FS_DI_FREE_SPACE);//得到T-Card信息 disk_free_space = disk_info.FreeClusters * disk_info.SectorsPerCluster * disk_info.BytesPerSector;//得到T-Card剩余空间 2、要再T-Card中建立一个文件,用于存放相应的联系人,这里我们是以当前时间建立文件名,以.csv为后缀的文件 MYTIME currTime; DTGetRTCTime(&currTime); FS_Open((U16 *)文件名, FS_CREATE_ALWAYS | FS_READ_WRITE); 3、查找联系人,并将联系人信息存入文件 store_index = g_mmi_phb_list_p->contact_array[i];//电话本存储的索引值 contact_info = mmi_phb_contact_get_contact(store_index);//根据索引值得到联系人的信息 mmi_phb_contact_free_contact(contact_info);//释放掉相应的资源 从T-Card导入联系人:从T-Card中搜索*.cvs文件,将联系人的正确信息加载进手机、sim卡中 主要思路: 1、搜索存放在T-Card中的所有*.cvs文件,然后将里面的信息读取出来 当然在这之前我们要判断当前是否存在T-Card、是否是USB状态, 手机或sim卡上的剩余空间是否能存放的下所选文件里面的联系人的信息 if (mmi_usb_is_in_mass_storage_mode())//判断是否处于USB连接状态 if (mmi_phb_check_ready(MMI_TRUE))//检查电话本是否准备好 2、用以临时文件存放所有搜索到的.cvs格式的文件的文件名 int FS_FindNext(FS_HANDLE FileHandle, FS_DOSDirEntry * FileInfo, WCHAR * FileName, UINT MaxLength) 3、读取文件信息,主要用到如下函数进行读取 FS_Seek//定位到指定出 FS_Read//读取指定大小的buffer 4、存储至电话本中 mmi_phb_op_save_contact(); 在srv_phb_datamgr_op_done函数中,判断并循环处理 总结:主要是电话本和文件存取
文件:kal_wsprintf FS_Open FS_Seek FS_Read FS_GetFileSize FS_Close 电话本: mmi_phb_contact_info_struct *g_mmi_phb_contact_p; mmi_phb_save_contact_cntx_struct *g_mmi_phb_save_contact_p; mmi_phb_view_contact_cntx_struct *g_mmi_phb_view_contact_p; mmi_phb_resource_struct g_mmi_phb_resource; mmi_phb_caller_res_struct *g_mmi_phb_res_p; mmi_phb_list_cntx_struct *g_mmi_phb_list_p; mmi_phb_choose_field_struct g_mmi_phb_choose_field; mmi_phb_contact_info_struct g_mmi_phb_field_data; srv_phb_datamgr_cntx_struct g_srv_phb_datamgr_cntx; srv_phb_datamgr_op_cntx_struct g_srv_phb_datamgr_op_cntx; 函数:mmi_phb_contact_info_struct* mmi_phb_contact_get_contact(U16 store_index) 盘符: #define SRV_FMGR_SYSTEM_DRV FS_GetDrive(FS_DRIVE_I_SYSTEM, 1, FS_NO_ALT_DRIVE) #define SRV_FMGR_PRIVATE_DRV FS_GetDrive(FS_DRIVE_I_SYSTEM, 2, FS_ONLY_ALT_SERIAL ) #define SRV_FMGR_PUBLIC_DRV FS_GetDrive(FS_DRIVE_V_NORMAL, 2, FS_DRIVE_V_NORMAL | FS_DRIVE_V_REMOVABLE) #define SRV_FMGR_PHONE_DRV FS_GetDrive(FS_DRIVE_V_NORMAL, 2, FS_DRIVE_V_NORMAL) #define SRV_FMGR_CARD_DRV FS_GetDrive(FS_DRIVE_V_REMOVABLE, 1, FS_NO_ALT_DRIVE) #define SRV_FMGR_CARD2_DRV FS_GetDrive(FS_DRIVE_V_REMOVABLE, 2, FS_NO_ALT_DRIVE)