我使用Firebase向我的應用發送通知,當我收到通知時,我將消息存儲在我的共享偏好設置中,然後在活動中顯示消息。不過,截至目前,我只是在共享偏好設置中保存最新的通知消息。如何將通知中的所有消息保存在共享首選項中?顯示來自多個通知的消息-Android
1
A
回答
1
我希望你有一些來自firebase的消息的唯一ID。現在,當您將郵件保存在共享首選項中時,請使用該有效內容中唯一的ID作爲密鑰。在你的情況下,MESSAGE_KEY是相同的,這就是爲什麼它被最新的覆蓋。只需在saveKeyMessage函數中使MESSAGE_KEY爲唯一,並且將爲您收到的每個通知創建新的共享首選項實例。
或
您可以使用以下代碼將密鑰設置爲共享首選項生成的唯一密鑰。
public boolean saveKeyMessage(String message){
SharedPreferences sharedPreferences =
mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Log.d("MainActivity", "Current Timestamp: " + format);
editor.putString(unique_message_id, message);
editor.apply();
return true;
}
您可以使用下面的代碼來顯示所有的共享偏好情況
SharedPreferences prefs =
mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
Map<String, ?> allPrefs = prefs.getAll(); //your sharedPreference
Set<String> set = allPrefs.keySet();
for(String s : set){
LOG.d(TAG, s + "<" + allPrefs.get(s).getClass().getSimpleName() +"> = "
+ allPrefs.get(s).toString());
希望這能解決您的問題!乾杯!
0
使用HashSet
將messages
存儲爲SharedPreferences
。
#。商店messages
爲SharedPreferences
:
public static final String KEY_MESSAGES = "messages";
............
.................
public boolean saveKeyMessage(String message) {
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
// Get existing messages
Set<String> messages = getMessages();
// Add new message to existing messages
messages.add(message);
// Store messages to SharedPreferences
editor.putStringSet(KEY_MESSAGES, messages);
editor.apply();
return true;
}
#。從SharedPreferences
獲取messages
:
public Set<String> getMessages() {
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
// Get messages
Set<String> messages = sharedPreferences.getStringSet(KEY_MESSAGES, new HashSet<String>());
return messages;
}
#。獲得最後message
從SharedPreferences
:
public String getLastKeyMessage() {
ArrayList<String> messageList = new ArrayList<String>(getMessages());
return messageList.get(messageList.size() - 1);
}
希望這將有助於〜
+0
感謝您的回覆,如果我沒有使用不支持putStringSet()的版本, – dfabiano
相關問題
- 1. Android通知不顯示消息正文
- 2. Android在單個通知中顯示多條消息
- 3. 收到Android Firebase通知消息但未顯示通知提示?
- 4. 如何使用Malcom Android SDK顯示自定義通知消息?
- 5. 來自AudioTrack流的通知消息
- 6. Woocommerce顯示多個錯誤消息/通知
- 7. Chrome桌面通知不顯示消息
- 8. 向瀏覽器顯示通知消息
- 9. 顯示通知消息永久
- 10. 只顯示來自ApplicationException的消息
- 11. 顯示來自庫的消息框
- 12. Rails3:顯示來自模型的消息?
- 13. NotifyIcon顯示來自程序的消息
- 14. 如何顯示來自webmethod的消息?
- 15. Android ListView不顯示來自多個ArrayList的信息
- 16. 如何在asp.net中顯示來自服務器端的通知或消息?
- 17. Windows窗體 - 顯示來自消息框的消息的問題
- 18. 顯示來自watchOS 2 app的通知
- 19. 顯示來自服務的Toast通知
- 20. 來自應用的Android展示通知
- 21. 來自BroadcastReceiver的Android展示通知
- 22. Android:來自消息的ArrayList
- 23. 在Android托盤上顯示Firebase通知數據消息
- 24. 只有當消息到達時才顯示Android通知
- 25. 如何在Android TextView中顯示來自Firebase的消息列表?
- 26. Android Studio AlertDialog - 顯示多條消息
- 27. Android存儲多個通知ID並允許同時顯示多個通知
- 28. 如何顯示來自Android磨損表面的通知
- 29. 在Android中如何顯示來自C庫的通知
- 30. 顯示來自android應用的配對通知
謝謝您的回答!這幫助了我很多,我已經確定了這個問題,他們都有相同的ID。但是,如何在getkeymessage()函數中調用該特定的ID? – dfabiano
您可以從有效內容中創建一個新的JSON對象...從中取出字符串並將其傳遞給該函數。使用相同的ID來檢索共享偏好。如果這解決了問題,請將答案標記爲已接受,因爲這對將來面臨此問題的任何人都有幫助。 –
我剛剛做了,非常有幫助。你介意添加這個過程如何尋找getkeymessage()函數? – dfabiano