//Forma de uso 1:
Context context = getApplicationContext();
CharSequence text = "Ha pasado algo bueno!";
int duration = Toast.LENGTH_SHORT; //También puede ser Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
//Forma de uso 2
Toast.makeText(context, text, duration).show();
//Ejemplo tipico en debug
Toast.makeText(getApplicationContext(), "Uff", Toast.LENGTH_LONG).show();
// En build.gradle (app)
dependencies {
.
compile 'com.android.support:design:22.2.0'
.
}
// parentLayout: ViewGroup donde lo queremos mostrar
// R.string.snackbar_text texto a mostrar definido en strings.xml
Snackbar
.make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG)
.setAction(R.string.snackbar_action, myOnClickListener)
.show(); // Importante!!! No olvidar mostrar la Snackbar.
//Instanciamos Notification Manager
NotificationManager
mNotificationManager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
1 - Configuramos nuestra Special Activity en nuestro Manifest:
Una Special Activity es usada normalmente para mostrar información que normalmente no cabe en la notificación.
No necesitamos crear un Back Stack ya que esta Activity no suele ser parte del flow de la Activity.
// Para la notificaciones, en lugar de crearlas directamente, lo hacemos mediante
// un Builder/contructor.
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Notificación")
.setContentText("Bienvenidos a los mundos de Yupi!!");
// Creamos un intent explicito, para abrir la app desde nuestra notificación
Intent resultIntent = new Intent(getApplicationContext(), ResultActivity.class);
// Indicamos que la Activity empiece en una nueva task
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Creamos el PendingIntent
PendingIntent notifyPendingIntent =
PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(notifyPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId es un identificador que nos permitirá
// actualizar la notificación más adelante
mNotificationManager.notify(mId, mBuilder.build());
Notificaciones Extendidas
Notificaciones Extendidas
Antes del build debemos crear un estilo (existen 3)
NotificationCompat.BigPictureStyle
NotificationCompat.BigTextStyle
NotificationCompat.InboxStyle
Se crea el estilo y se asigna mediante el builder
NotificationCompat.BigTextStyle bigTextStyle = new
NotificationCompat.BigTextStyle();
bigTextStyle.setBigContentTitle("BigContentTitle");
bigTextStyle.setSummaryText("Resumen, lalalalalalala");
bigTextStyle.bigText(“TextoLargo”);
mBuilder.setStyle(bigTextStyle);
Notification noti = mBuilder.build();
Extras
//sonido default
notification.defaults |= Notification.DEFAULT_SOUND;
//sonido curstom
notification.sound = Uri.parse(RUTA AL RECURSO);
//vibración normal
noti.defaults |= Notification.DEFAULT_VIBRATE
//O patrón de vibración propio
long [] vibrate = {0, 100, 200, 300}
Notification.vibrate = vibrate;
Extras
2. Inicializamos nuestra notificación (mediante un builder) y el intent explicito
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Notificación")
.setContentText("Bienvenidos a los mundos de Yupi!!");
Intent resultIntent = new Intent(getApplicationContext(), YupiActivity.class);
3. Generamos una stack artificial de activites y le adjuntamos el intent
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
//Ponemos la activity que abriremos en la stack
stackBuilder.addParentStack(YupiActivity.class);
//Ponemos el intent en el top de la stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
4. Generamos la notificación y la enviamos
mNotificationManager.notify(mId, mBuilder.build());
Ejemplo Completo
//Instanciamos Notification Manager
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Para la notificaciones, en lugar de crearlas directamente, lo hacemos mediante
// un Builder/contructor.
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Notificación")
.setContentText("Bienvenidos a los mundos de Yupi!!");
// Creamos un intent explicito, para abrir la app desde nuestra notificación
Intent resultIntent = new Intent(getApplicationContext(), YupiActivity.class);
//Generamos la backstack y le añadimos el intent
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(YupiActivity.class);
stackBuilder.addNextIntent(resultIntent);
//Obtenemos el pending intent
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
// mId es un identificador que nos permitirá actualizar la notificación
// más adelante
mNotificationManager.notify(mId, mBuilder.build());