私は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
に格納します。
# SharedPreferences
にストアmessages
:
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);
}
希望これは〜
+0
あなたの回答ありがとう、これは私がputStringSet()をサポートしていないバージョンを使用していなかった場合に動作します – dfabiano
関連する問題
- 1. 複数の通知を表示する
- 2. BroadcastReceiverからのAndroidの表示通知
- 3. サーバーから取得した通知メッセージをAndroidで表示するには
- 4. プッシュ通知でメッセージ本文を表示
- 5. Android通知にメッセージ本文が表示されない
- 6. Android BLE API:複数通知
- 7. ファイヤーベースクラウドメッセージからのプッシュ通知のメッセージをテキストビューで表示する方法アンドロイド
- 8. サービスからのステータスバーの通知をAndroidで表示
- 9. アンドロイドデバイスで複数の通知を表示する方法
- 10. laravelで複数のトースト通知を表示する方法
- 11. 複数のローカル通知を表示する方法
- 12. BroadcastReceiverからのステータスバー通知を表示
- 13. Androidの着用で通知を表示
- 14. Android:通話中にメッセージを表示
- 15. Androidでタッチ通知を表示するダイアログを表示
- 16. 剣道通知ウィジェット複数回表示と非表示
- 17. アプリビューで通知回数を表示する方法android
- 18. 複数の通知音を防ぐandroid
- 19. プッシュ通知メッセージのアイコンを表示する方法
- 20. Androidの通知 - 複数のユーザーのプッシュ通知
- 21. 複数の通知が表示され、最初の通知のみが表示されます。
- 22. サービスからトースト通知を表示
- 23. Androidトレイにfirebase通知データメッセージを表示
- 24. Android FCMがトリガーサービスで通知を表示
- 25. プッシュ通知からのプッシュ表示
- 26. Android BLEの同時通知と表示
- 27. Woocommerceは複数のエラーメッセージ/通知を表示します
- 28. 通知を表示するAlarm Manager/Wake Lock/Sleep(Androidのローカル通知)
- 29. Android - GCMプッシュ通知が通知リストに表示されない
- 30. LockScreen(Android)のGCM通知のタイトルとメッセージ
を助けるあなたの答えをありがとう!これは私の多くを助け、私は問題を特定した、彼らはすべて同じIDを持っていた。しかし、getkeymessage()関数で特定のIDをどのように呼び出すのですか? – dfabiano
ペイロードから新しいJSONオブジェクトを作成して、そこから文字列を取り出し、関数に渡すことができます。同じidを使用して、共有設定を取得します。将来的にこの問題に直面する人にとって役立つような問題が解決された場合は、回答を受け入れたものとしてマークしてください。 –
私はちょうど、かなり役に立ちました。このプロセスがgetkeymessage()関数をどのように探すのでしょうか? – dfabiano