usar studio sirve que programacion para móviles getsharedpreferences ejemplo desarrollo curso como aplicaciones android parse.com notifications push-notification sharedpreferences
https://www.dropbox.com/s/atvi2gee5bycq6k/ParseReceiveAndShow-master1.zip?dl=0

android - studio - Cómo guardar notificaciones automáticas de parse por SharedPreferences



para que sirve shared preference en android (3)

Supongo que usas la versión más reciente de la Biblioteca Parse ( Parse 1.9.3 ) Esto es lo que debes hacer

Necesita crear una clase, es decir, PushNotificationBroadcastReceiver que amplíe ParsePushBroadcastReceiver y anule onReceive siguiente manera:

public class PushNotificationBroadcastReceiver extends ParsePushBroadcastReceiver { /** * Everytime a Push notification message comes, It is received here. * * @param context * @param intent contains pushed Json or Message */ @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); try { JSONObject notification; notification = new JSONObject(extras.getString(ParsePushBroadcastReceiver.KEY_PUSH_DATA)); // Save Json to Shared Preferences. Add your Own implementation here String title = notification.getString("title"); String message = notification.getString("alert"); SharedPreferences sharedpreferences = context.getSharedPreferences("myPreferences", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString("title", title); editor.putString("message", message); editor.commit(); //---------------------------------------------------------------------------------- } catch (JSONException e) { Log.e("Error Parsing JSON", e.getMessage()); } } /** * Returns the Activity Class which you want to open when notification is tapped * * @param context * @param intent * @return Activity Class which you want to open */ @Override protected Class<? extends Activity> getActivity(Context context, Intent intent) { return SomeActivity.class; } /** * This method is called once user taps on a Push Notification * * @param context * @param intent */ @Override protected void onPushOpen(Context context, Intent intent) { super.onPushOpen(context, intent); } }

Además, no olvide registrar PushNotificationBroadcastReceiver en su archivo de manifiesto como este

<receiver android:name="com.package.PushNotificationBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver>

Y eso es todo, si necesitas llevar las cosas un poco más allá, te sugiero que consultes la documentación de notificaciones push de Parse.

Espero que esto ayude :)

Estoy enviando notificaciones automáticas desde pasrse.com, quiero guardar las notificaciones automáticas para que puedan verse más tarde después de que se cierre la aplicación.

Puedo recibir las notificaciones en una vista de texto de una actividad separada, pero si voy a otra actividad las notificaciones desaparecen.

MainActivity.java

public class MainActivity extends ActionBarActivity { Button Notify; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Notify = (Button)findViewById(R.id.notify); Notify.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, DisplayPush.class); intent.putExtra("com.parse.Data","String text"); startActivity(intent); } }); }

DisplayPush.java

public class DisplayPush extends Activity { String jsonData; public static final String MyPREFERENCES = "MyPrefs" ; public static final String Titletobeput = "title"; public static final String Messagetobeput = "mess"; SharedPreferences sharedpreferences; @Override public void onBackPressed(){ Intent myIntent = new Intent(DisplayPush.this,MainActivity.class); startActivity(myIntent); // overridePendingTransition(R.anim.from_middle, R.anim.to_middle); finish(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.notification); TextView notification_title = (TextView) findViewById(R.id.title); TextView notification_message = (TextView) findViewById(R.id.message); ParseAnalytics.trackAppOpened(getIntent()); Intent intent = getIntent(); Bundle extras = intent.getExtras(); if(extras !=null) if(extras.containsKey("com.parse.Data")) jsonData = extras.getString("com.parse.Data"); //Bundle extras = intent.getExtras(); String jsonData = extras.getString("com.parse.Data"); try{ JSONObject notification = new JSONObject(jsonData); String Title = notification.getString("title"); String Message = notification.getString("alert"); notification_message.setText(Message); notification_title.setText(Title); sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(Titletobeput, Title); editor.putString(Messagetobeput, Message); editor.commit(); } catch(JSONException e){ Toast.makeText(getApplicationContext(), "Something went wrong with the notification", Toast.LENGTH_SHORT).show(); } } }

Notification.xml (donde se muestran las notificaciones)

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="40dp" /> <TextView android:id="@+id/message" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginLeft="22dp" android:layout_marginTop="80dp" /> </RelativeLayout>

ActivityMain.xml (solo un botón para mostrar el botón de notificación)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="hasan.parsereceiveandshow.MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Press the button to display notifications" /> <Button android:id="@+id/notify" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginLeft="44dp" android:layout_marginTop="63dp" android:text="See Notifications" /> </RelativeLayout>

¿Hay alguna forma de que pueda mostrar la notificación completa en la barra de estado / diálogo de notificación automáticamente? Como los mensajes largos se truncan.


Guardar información de notificación en SharedPreference :

SharedPreferences prefs = getSharedPreferences(<Name>, <Mode>); SharedPreferences.Editor editor = prefs.edit(); editor.putString(<KEY>, notification_title.getText().toString()).commit(); //Similarly, save other infos

Extraer información en otra actividad:

SharedPreferences prefs = getSharedPreferences(<Name>, <Mode>); String title = prefs.getString(<KEY>, <DefaultValue>);


Cito la parte de la pregunta "quiero guardar las notificaciones push para que puedan verse más tarde después de que se cierre la aplicación".

Hice esto y funciona perfectamente como yo quiero.

DisplayPush.java

public class DisplayPush extends Activity { String jsonData; Button save; TextView notification_title; TextView notification_message; public static final String MyPREFERENCES = "MyPrefs" ; public static final String Titletobeput = "title"; public static final String Messagetobeput = "alert"; SharedPreferences sharedpreferences; @Override public void onBackPressed(){ Intent myIntent = new Intent(DisplayPush.this,MainActivity.class); startActivity(myIntent); // overridePendingTransition(R.anim.from_middle, R.anim.to_middle); finish(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.notification); save = (Button) findViewById(R.id.button); TextView notification_title = (TextView) findViewById(R.id.title); TextView notification_message = (TextView) findViewById(R.id.message); ParseAnalytics.trackAppOpened(getIntent()); Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) if (extras.containsKey("com.parse.Data")) jsonData = extras.getString("com.parse.Data"); //Bundle extras = intent.getExtras(); String jsonData = extras.getString("com.parse.Data"); try { JSONObject notification = new JSONObject(jsonData); String Title = notification.getString("title"); String Message = notification.getString("alert"); notification_message.setText(Message); notification_title.setText(Title); sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); String n = notification_title.getText().toString(); String e = notification_message.getText().toString(); SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(Titletobeput, n); editor.putString(Messagetobeput, e); editor.commit(); } catch (JSONException e) { Toast.makeText(getApplicationContext(), "Something went wrong with the notification", Toast.LENGTH_SHORT).show(); } } public void Get(View view) { notification_title = (TextView) findViewById(R.id.title); notification_message = (TextView) findViewById(R.id.message); sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); if (sharedpreferences.contains(Titletobeput)) { notification_title.setText(sharedpreferences.getString(Titletobeput, "")); } if (sharedpreferences.contains(Messagetobeput)) { notification_message.setText(sharedpreferences.getString(Messagetobeput, "")); } } }

Desde notification.xml simplemente llame a android:onClick="Get" en el botón Guardar.

Aquí está mi proyecto de trabajo, con el código de esta respuesta. https://www.dropbox.com/s/atvi2gee5bycq6k/ParseReceiveAndShow-master1.zip?dl=0

Moderadores antes de eliminar mi respuesta, miren el código / proyecto.