0

我已经创建了一个从PushBots接收推送通知的应用程序。如何在SharedPreferences中保存推送通知数据并在RecyclerView中显示

我成功接收推送通知,但我想将推送数据存储在SharedPreferences中,并将其显示为包含RecyclerView的另一个活动。

我知道内容提供者是一种更好的方法,但我想坚持使用SharedPreferences。

这里是我的自定义广播接收机

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

那么在哪个部分你面临的概率LEM? – Yashasvi

+0

无法保存在sharedpreferences中的字符串,也在我的片段中我填充RecyclerView我无法访问到sharedpreferences文件 –

+0

添加我的答案在下面。看一看。 – Yashasvi

回答

0

创建自定义PushData类,并使用GSON库保存为一个字符串您的数据。

这里是干净的example

+0

我的数据是纯文本 –

0

试试吧。

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); 
} 

,并得到它

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

对于把字符串中SharedPreferences

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

对于片段得到共享偏好:

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

1。onReceive方法如下面初始化共享偏好变量,

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

2.保存Push消息来接收时共享偏好,

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

    // 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.获得从共享偏好保存推送消息显示,

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