显示来自多个通知的消息 - 安卓



我正在使用 Firebase 向我的应用发送通知,当我收到通知时,我会将消息存储在我的共享首选项中,然后在活动中显示该消息。但是,截至目前,我仅在共享首选项中保存最新的通知消息。如何将通知中的所有消息保存在共享首选项中?

我希望您从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());

希望这能解决你的问题!干杯!

使用 HashSetmessages存储到 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;
}

#.获取SharedPreferences的最后message

public String getLastKeyMessage() {
    ArrayList<String> messageList = new ArrayList<String>(getMessages());
    return messageList.get(messageList.size() - 1);
}

希望这会有所帮助~

相关内容

  • 没有找到相关文章

最新更新