将联系人导出到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