internal Task <IEnumerable <Message> > SearchMessageAsync(MessagesSearchFilter filter) { return(Task.Run <IEnumerable <Message> >(() => { List <Message> messageList = new List <Message>(); int ret; Interop.Messages.MessageSearchCallback callback = (IntPtr messageHandle, int index, int resultCount, int totalCount, IntPtr userData) => { try { if (messageHandle != IntPtr.Zero) { IntPtr duplicatedMessageHandle = IntPtr.Zero; DuplicateMessageHandle(messageHandle, out duplicatedMessageHandle); if (duplicatedMessageHandle != IntPtr.Zero) { int type = (int)MessageType.Unknown; int result = Interop.Messages.GetMessageType(duplicatedMessageHandle, out type); if (result != (int)MessagesError.None) { Log.Error(Globals.LogTag, "Failed to get message type, Error - " + (MessagesError)result); } switch ((MessageType)type) { case MessageType.Sms: { var messageItem = new SmsMessage(duplicatedMessageHandle); messageList.Add(messageItem); break; } case MessageType.Mms: { var messageItem = new MmsMessage(duplicatedMessageHandle); messageList.Add(messageItem); break; } case MessageType.CellBroadcast: { var messageItem = new CBMessage(duplicatedMessageHandle); messageList.Add(messageItem); break; } case MessageType.Push: { var messageItem = new PushMessage(duplicatedMessageHandle); messageList.Add(messageItem); break; } default: { Log.Error(Globals.LogTag, "Invaild message type - " + type); break; } } return true; } } } catch { Log.Error(Globals.LogTag, "Exception in Callback"); } return false; }; ret = Interop.Messages.SearchMessage(_MessageServiceHandle, (int)filter.MessageBoxType, (int)filter.MessageType, filter.TextKeyword, filter.AddressKeyword, 0, 0, callback, IntPtr.Zero); if (ret != (int)MessagesError.None) { Log.Error(Globals.LogTag, "Failed to search message, Error - " + (MessagesError)ret); MessagesErrorFactory.ThrowMessagesException(ret, _MessageServiceHandle); } return messageList; })); }
/// <summary> /// Searches for messages. /// </summary> /// <privilege>http://tizen.org/privilege/message.read</privilege> /// <param name="filter">The search filter for searching messages.</param> /// <returns>A task containing the messages, which match the search filter.</returns> /// <exception cref="InvalidOperationException">Thrown when the method failed due to an invalid operation.</exception> /// <exception cref="NotSupportedException">Thrown when the message service is not supported.</exception> /// <exception cref="ArgumentException">Thrown when input coordinates are invalid.</exception> /// <exception cref="OutOfMemoryException">Thrown when failed due to out of memory.</exception> /// <exception cref="UnauthorizedAccessException">Thrown when an application does not have proper privileges.</exception> /// <since_tizen> 3 </since_tizen> public static Task <IEnumerable <Message> > SearchMessageAsync(MessagesSearchFilter filter) { return(MessagesManagerImpl.Instance.SearchMessageAsync(filter)); }