提到短信,很多人最想知道的是短信列表的保存,本人也找了好久,在plutommi\service\smssrv下有一個SmsFolderListSrv.c的文件,短信列表就定義在此。
另外,提到短信的還有SmsAppSendMsg.c
static U16 srv_sms_inbox_size;
static U16 srv_sms_outbox_size;
static U16
srv_sms_drafts_size;
#ifdef __SRV_SMS_UNSENT_LIST__
static U16
srv_sms_unsent_size;
#endif
#ifdef __SRV_SMS_SIMBOX_SUPPORT__
static
U16 srv_sms_sim_size;
#endif
#ifdef __SRV_SMS_ARCHIVE__
static U16
srv_sms_archive_size;
#endif /* __SRV_SMS_ARCHIVE__ */
以上部分定義的是各個短信箱的短信數量。
static U16 srv_sms_inbox_list[SRV_SMS_MAX_SMS_ENTRY];
static U16
srv_sms_outbox_list[SRV_SMS_MAX_SMS_ENTRY];
static U16
srv_sms_drafts_list[SRV_SMS_MAX_SMS_ENTRY];
#ifdef
__SRV_SMS_UNSENT_LIST__
static U16
srv_sms_unsent_list[SRV_SMS_MAX_SMS_ENTRY];
#endif /* __SRV_SMS_UNSENT_LIST__
*/
#ifdef __SRV_SMS_SIMBOX_SUPPORT__
static U16
srv_sms_sim_list[SRV_SMS_MAX_SMS_ENTRY];
#endif /* __SRV_SMS_SIMBOX_SUPPORT__
*/
#ifdef __SRV_SMS_ARCHIVE__
static U16
srv_sms_archive_list[SRV_SMS_MAX_ARCH_ENTRY];
#endif /* __SRV_SMS_ARCHIVE__
*/
以上部分定義的是各個短信箱中信息ID列表數組。以上是短信數組的核心部分,是用戶最關心的短信列表。下面來介紹具體的列表操作函數。
void srv_sms_list_init(void):列表初始化函數
U16 srv_sms_get_unread_sms_num(void):獲取未讀短信數量函數
U16 srv_sms_get_unread_sim_sms_num(void):獲取SIM卡中未讀短信數量函數
U16 srv_sms_get_msg_id(srv_sms_box_enum msg_box_type, U16 list_index):通過短信箱類型和列表索引號獲得短信息ID,這裏說一下,列表索引號即剛纔所定義的對應數組的下標
U16 srv_sms_get_list_size(srv_sms_box_enum msg_box_type):很常用的一個函數,通過短信箱類型獲取其元素個數
srv_sms_box_enum srv_sms_get_list_type(srv_sms_status_enum status, srv_sms_storage_enum storage_type, srv_sms_folder_enum folder_id):通過短信息類型、存儲位置、文件夾屬性之一或許短信箱類型
U16 srv_sms_get_msg_list_index(srv_sms_box_enum* msg_box_type, U16 msg_id):通過短信息ID獲取短信箱類型和短信息在對應短信箱中的索引值。編程時經常不使用該函數的返回值,但是該返回值是索引值和信息ID值關聯的途徑,有時候會起到很大作用。切不可只看到srv_sms_get_msg_list_index(&msg_box_type, msg_id);就認爲該函數只能獲得短信息的信箱類型。
void srv_sms_copy_msg_list(srv_sms_box_enum msg_box_type, srv_sms_storage_enum dest_storage, srv_sms_sim_enum sim_id, SrvSmsCallbackFunc callback_func, void* user_data):拷貝所有源(手機或SIM1、SIM2卡)短信到目標位置
void srv_sms_move_msg_list(srv_sms_box_enum msg_box_type, srv_sms_storage_enum dest_storage, srv_sms_sim_enum sim_id, SrvSmsCallbackFunc callback_func, void* user_data):移動所有源短信到目標位置
void srv_sms_delete_msg_list(srv_sms_box_enum msg_box_type, srv_sms_sim_enum sim_id, SrvSmsCallbackFunc callback_func, void* user_data):刪除所有指定位置(手機或SIM1、SIM2卡)短信
再來看SmsStorageInterfaceSrv.c文件:
MMI_BOOL srv_sms_is_msg_exist(U16 msg_id):判斷信息ID爲msg_id的信息是否存在
void srv_sms_read_msg(U16 msg_id, MMI_BOOL change_status, srv_sms_msg_data_struct* msg_data, SrvSmsCallbackFunc callback_func, void *user_data):通過或msg_id讀取信息到隊列並註冊回調函數。該函數並不顯示信息內容,一般信息顯示內容在回調函數中。
void srv_sms_change_msg_status(U16 msg_id, srv_sms_status_enum status, SrvSmsCallbackFunc callback_func, void *user_data):修改信息狀態並註冊回調函數。
void srv_sms_sort_msg(U16 *msg_id_array, U16 msg_num, srv_sms_sort_enum sort_flag, srv_sms_order_enum order_flag):信息排序,目前只支持按時間排序,若需要其它排序方式可在此添加。
const S8* srv_sms_get_msg_asc_address(U16 msg_id):讀取信息地址,以ASCII字符串返回
void srv_sms_get_msg_address(U16 msg_id, S8* ucs2_addr_buff):讀取信息地址,以UCS2字符流返回
void srv_sms_get_msg_timestamp(U16 msg_id, MYTIME *time_stamp):獲取信息時間,以MYTIME類型結構體指針返回
U32 srv_sms_get_msg_timestamp_utc_sec(U16 msg_id):獲取信息時間,以UTC秒數返回
srv_sms_pid_enum srv_sms_get_msg_pid(U16 msg_id):獲得信息協議ID
srv_sms_status_enum srv_sms_get_msg_status(U16 msg_id):獲取信息狀態
srv_sms_sim_enum srv_sms_get_msg_sim_id(U16 msg_id):獲取信息所屬SIM卡
U16 srv_sms_get_msg_size(U16 msg_id):獲取信息大小