0

Ich habe eine Anwendung erstellt, die Push-Benachrichtigungen von PushBots empfängt.Wie man Push-Benachrichtigungsdaten in SharedPreferences speichert und in RecyclerView anzeigt

Ich erhalte die Push-Benachrichtigungen erfolgreich, aber ich möchte die Push-Daten in SharedPreferences speichern und eine andere Aktivität mit einem RecyclerView anzeigen.

Ich kenne Content-Provider ist ein besserer Ansatz, aber ich möchte mit SharedPreferences ab sofort bleiben.

Hier ist meine benutzerdefinierte Broadcast-Receiver

public class customHandler extends BroadcastReceiver 
{ 
    private static final String TAG = "customHandler"; 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     String action = intent.getAction(); 
     Log.d(TAG, "action=" + action); 
     // Handle Push Message when opened 
     if (action.equals(PBConstants.EVENT_MSG_OPEN)) { 
      //Check for Pushbots Instance 
      Pushbots pushInstance = Pushbots.sharedInstance(); 
      if(!pushInstance.isInitialized()){ 
       Log.d("Initializing Pushbots."); 
       Pushbots.sharedInstance().init(context.getApplicationContext()); 
      } 

      //Clear Notification array 
      if(PBNotificationIntent.notificationsArray != null){ 
       PBNotificationIntent.notificationsArray = null; 
      } 

      HashMap<?, ?> PushdataOpen = (HashMap<?, ?>) intent.getExtras().get(PBConstants.EVENT_MSG_OPEN); 
      Log.w(TAG, "User clicked notification with Message: " + PushdataOpen.get("message")); 

      //Report Opened Push Notification to Pushbots 
      if(Pushbots.sharedInstance().isAnalyticsEnabled()){ 
       Pushbots.sharedInstance().reportPushOpened((String) PushdataOpen.get("PUSHANALYTICS")); 
      } 

      //Start Main Activity On CLicking Notification 
      String packageName = context.getPackageName(); 
      Intent resultIntent = new Intent(context.getPackageManager().getLaunchIntentForPackage(packageName)); 
      resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TASK); 

      resultIntent.putExtras(intent.getBundleExtra("pushData")); 
      Pushbots.sharedInstance().startActivity(resultIntent); 

      // Handle Push Message when received 
     }else if(action.equals(PBConstants.EVENT_MSG_RECEIVE)){ 
      HashMap<?, ?> PushdataOpen = (HashMap<?, ?>) intent.getExtras().get(PBConstants.EVENT_MSG_RECEIVE); 
      Log.w(TAG, "User Received notification with Message: " + PushdataOpen.get("message")); 
     } 
    } 
} 
+0

Also in welchem ​​Teil stehen Sie vor dem Prob lem? – Yashasvi

+0

Nicht in der Lage, die Zeichenfolge in geteilten Präferenzen zu speichern, auch in meinem Fragment, wo ich die RecyclerView bevölkern Ich bin nicht in der Lage, Zugriff auf die Datei mit gemeinsamen Preferences –

+0

meine Antwort unten hinzugefügt. Guck mal. – Yashasvi

Antwort

0

Erstellen einer benutzerdefinierten PushData Klasse und verwenden Gson Bibliothek als String Ihre Daten zu speichern.

Hier ist eine saubere example

+0

Meine Daten sind Klartext –

0

es versuchen.

public void addNotification(String notification) { 
    // get old notifications 
    String oldNotifications = getNotifications(); 
    if (oldNotifications != null) { 
     oldNotifications += "|" + notification; 
    } else { 
     oldNotifications = notification; 
    } 
    editor.putString(KEY_NOTIFICATIONS, oldNotifications); 
    editor.commit(); 
} 

public String getNotifications() { 
    return pref.getString(KEY_NOTIFICATIONS, null); 
} 

und es in SharedPreferences

String oldNotification = AppController.getInstance().getPrefManager().getNotifications(); 
List<String> messages = Arrays.asList(oldNotification.split("\\|")); 
0

Bei String setzen erhalten:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString(key, value); 
editor.commit(); 

für das Erhalten gemeinsame Vorlieben in Fragmente:

SharedPreferences prefs = getActivity().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String name = prefs.getString(key, "default value"); 
0

1. initialisieren Gemeinsame Einstellungsvariablen in onReceive Verfahren wie unten,

SharedPreferences prf = context.getSharedPreferences("YOUR_PREFERENCE_NAME", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prf.edit(); 

2. Speichern Push-Nachricht an die gemeinsamen Vorlieben, wenn empfangen,

  ................ 
      ................ 

    // Handle Push Message when received 
      }else if(action.equals(PBConstants.EVENT_MSG_RECEIVE)) 
       { 
       HashMap<?, ?> PushdataOpen = (HashMap<?, ?>) intent.getExtras().get(PBConstants.EVENT_MSG_RECEIVE); 
       Log.w(TAG, "User Received notification with Message: " + PushdataOpen.get("message")); 

       String message=(String) PushdataOpen.get("message"); 
       editor.putString("push_message", message); 
       editor.commit(); 
      } 

3. Erhalten von gemeinsam genutzten Präferenz gespeichert Push-Nachricht für Anzeige,

SharedPreferences prf = context.getSharedPreferences("YOUR_PREFERENCE_NAME", Context.MODE_PRIVATE); 
String message=prf.getString("push_message", "");