2016-04-24 55 views
1

我可以用這個代碼閱讀新的短信,然後將狀態更改爲「閱讀」。通用的Windows應用程序

Windows.ApplicationModel.Chat.ChatMessageStore store = await Windows.ApplicationModel.Chat.ChatMessageManager.RequestStoreAsync(); 
     var msgList = store.GetMessageReader(); 

     IReadOnlyList<Windows.ApplicationModel.Chat.ChatMessage> a = await msgList.ReadBatchAsync(); 

     foreach (var item in a) 
     { 
      if (item.IsSeen) 
      { 

       Don't do anything.. SMS is Readed 
      } 
      else 
      { 

      item.IsSeen=True (This not work because don't save this    status) } 

我嘗試馬克IsSeen,但它不是工作...任何想法讀取新短信?

+0

我發現這個指令:markasreadasync和markasseenasync,但我不知道怎麼用... – abraham

回答

1

MarkAsSeenAsync如在MSDN上編寫的那樣標記所見的所有傳輸消息。 所以如果你使用

store.MarkAsSeenAsync() 

你的所有消息記

但是你可以使用第二個覆蓋

store.MarkAsSeenAsync(IIterable(String)) 

由於IIterable(字符串),你可以使用收集

List<string> 

與消息ID的。 您的代碼看起來就像這樣:

Windows.ApplicationModel.Chat.ChatMessageStore store = await Windows.ApplicationModel.Chat.ChatMessageManager.RequestStoreAsync(); 
var msgList = store.GetMessageReader(); 
IReadOnlyList<Windows.ApplicationModel.Chat.ChatMessage> a = await msgList.ReadBatchAsync(); 

List<string> l = new List<string>(); 

foreach (Windows.ApplicationModel.Chat.ChatMessage item in a) 
{ 
    if (!item.IsSeen) l.Add(item.Id); 
} 

await store.MarkAsSeenAsync(l); 
+0

嘿兄弟你是最棒的。你給我的想法。 。只需要這一行:await store1.MarkMessageReadAsync(item1.Id);非常感謝!..我不能離開你,因爲和新手,但非常感謝! – abraham

+0

謝謝@abraham。即使你在這裏新來,我認爲你可以標記爲答案。 –

+0

嗨,哥們,不僅有15分,我有14個XD其真的很難在這裏得到一些點jejeje ..如果你投我的帖子我轉發你的觀點 – abraham