При разрабортке под Android используются 3 типа уведомлений:
Главное отличие данного типа сообщений в том, что оно ждет дальнейшего действия от пользователя (нажатия клавиши, закрытия и т.д.), а также появляется непосредственно в области видимости пользователя.
Рассмотрим создание простого сообщения (диалога) с единственной кнопкой.
new AlertDialog.Builder(this).setTitle("New Year").setMessage("Happy New Year").setIcon(R.drawable.christmas155).setNeutralButton("Close", null).show();
Вот как Alert Dialog будет выглядеть в эмуляторе:
Данный вид сообщений может содержать в себе не более трех кнопок( может вообще их не содержать), а именно Neutral, Positive и Negative. К ним логично привязать следующие действия:
Более подробно познакомиться с Alert Dialog сообщениями можно из официальной документации здесь.
Главное отличие Toast сообщений в том, что они автоматически исчезают после определенного значения таймаута. На текущий момент можно задать всего два значения для таймаута, а именно Toast.LENGTH_SHORT и Toast.LENGTH_LONG
Рассмотрим создание простого всплывающего Toast сообщения:
Toast.makeText(this, "Your message have been sent " , Toast.LENGTH_SHORT).show();
Вот как созданный Toast будет выглядеть в эмуляторе:
Как несложно догадаться в метод makeText(), который формирует нам простое всплывающее сообщение передается 3 параметра, а именно Context , текст самого сообщения и таймаут. Далее с помощью метода show() сообщение отображается на экране.
При необходимости можно задать выравнивание сообщению с помощью метода setGravity() , а также задать свой собственный стиль отображения через setView(View view).
Более подробно познакомиться с Toast сообщениями можно из официальной документации здесь.
Главное отличие Notification сообщений в том, что они не показываются непосредственно в области вашего приложения, а отображаются в зоне уведомлений в верхней панели вашего устройства.
В зоне уведомлений отображается сначала только маленькая иконка полученного сообщения, а при пролистывании панели мы увидим список всех полученных уведомлений вместе с текстовым описанием.
Рассмотрим создание простого уведомления:
//описание парметров сообщения final int NOTIF_ID = 1234; NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.christmas141) .setLargeIcon(BitmapFactory.decodeResource(this.getResources(),R.drawable.gifts_icon)) .setContentTitle("New present ") .setContentText("Present from Mikhail S") .setAutoCancel(true); //описание действия при клике по сообщению Intent resultIntent = new Intent(this, MyActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(MyActivity.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); mBuilder.setContentIntent(resultPendingIntent); //отправка сообщения в область нотификации NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(NOTIF_ID, mBuilder.build());
Для того чтобы увидеть созданное уведомление необходимо прокрутить Action bar (панель в верхней части устройства). Вот как созданный Notification будет выглядеть в эмуляторе:
Для создания корректного уведомления необходимо выполнить 3 действия: описать параметры самого сообщения, описать действие, которое должно выполняться при клике по сообщению, а также отправить уведомление в менеджер. Рассмотрим каждый из пунктов подробнее.
Для создания уведомления обязательно задать 3 следующих параметра:
При клике по уведомлению, можно задать действие , которое будет осуществляться.
Сначала мы создаем простой Intent и указываем ему какую активность нашего приложения открывать. Мы можем передать в неё какие-либо данные методом putExtra() .
Затем мы создаем объект TaskStackBuilder, для того чтобы при переходе из заданной активности приложения по кнопке "назад" пользователь корректно попадал на рабочий экран.
Далее мы оборачиваем Intent в PendingIntent для того, чтобы приложение, в которое мы его передаем ( в данном случае это NotificationManager) выполняло указанный кусок кода с правами текущего приложения, а не своими собственными ( как при передаче простого Intent).
При создании PendingIntent первый параметр можно задать 0, так как в официальной документации сказано, что он не используется. Второй параметр - это флаг, который позоляет управлять поведением при создании такого же действия . Он имеет 4 значения:
Для отправки уведомлений нам необходимо сделать 2 действия : создать объект менеджер уведомлений NotificationManager, а затем вызвать у данного объекта метод notify(), передавая первым аргументом идентификатор сообщения, а вторым само уведомление с заданными параметрами. Причем при отправке второго сообщения с тем же id, оно заменит предыдущее.
Более подробно познакомиться с Notification сообщениями можно из официальной документации здесь и статьей здесь.