Учимся создавать Notification уведомления
Главная » Учимся создавать Notification уведомления

Пришло время научиться использовать такую вещь, как уведомления в Android ОС. Мы видим их регулярно в своих смартфонах и планшетах - различные приложения сообщают нам о разных событиях именно с помощью отображения Notification уведомлений в статус баре устройства. Пользователю остается только выдвинуть шторку вниз и увидеть, что же там ему пишет какая то программа.

Для создания собственных уведомлений нужно выполнить такие основные шаги:

- объявить уведомление и определить особенности его отображения в Status Bar;

- определить внешний вид уведомления при раскрытии шторки устройства, а также действие по нажатию на тело уведомления;

- настроить желаемые особенности уведомления, типа звуковой сигнал при его появлении, мерцание экрана или закрытие уведомления после нажатия пользователя по нему;

- сообщить о своем уведомлении системе;

- наконец то запустить отображение Notification уведомления, используя его уникальный ID, который вы сами и задаете, а после выполнения задачи, стоящей перед сообщением, закрыть его, используя тот же уникальный ID.

Теперь перейдем от теории к практике и создадим приложение, которое будет провоцировать появление в системе уведомления о том, что нам нужно лучше усердствовать в учебе и при нажатии по нему будет выполняться переход на сайт. Появление уведомления будет сопровождаться феерверками звуковым сигналом, а при нажатии по нему пользователем, оно будет исчезать.

Создадим новый проект, выбираем Blank Activity, Android 2.2+. Пользовательский интерфейс приложения будет состоять из двух кнопок, при нажатии на одну будет появляться уведомление, при нажатии на другую оно будет исчезать. Открываем файл activity_main.xml и добавляем туда пару кнопок:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical"
 tools:context=".ImagePickerActivity" >
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/start"
 android:text="Показать уведомление"
 android:layout_gravity="center"/>
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/stop"
 android:text="Отменить"
 android:layout_gravity="center"/>
</LinearLayout>

Теперь переходим в файл MainActivity.java и добавляем следующий код:

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

 //Создаем объект NotificationManager для управления уведомлениями:
 private NotificationManager mNotManager;
 private static final int mNotificationID=1000;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 String NotificationString = Context.NOTIFICATION_SERVICE;
 mNotManager = (NotificationManager) getSystemService(NotificationString);

 //Создаем сообщение, говорящее нам о наличии нового уведомления, настраиваем для него текст и картинку:
 final Notification mMessage = new Notification(R.drawable.ic_launcher,"У вас новое уведомление!",
 System.currentTimeMillis());

 Button mStart = (Button)findViewById(R.id.start);
 Button mStop = (Button)findViewById(R.id.stop);

 //Обрабатываем нажатие кнопки start:
 mStart.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {

 //Настраиваем вид нашего уведомления, задаем заголовок, основной текст
 Context context = getApplicationContext();
 CharSequence contentTitle = "Срочное сообщение!";
 CharSequence contentText = "learn-android.ru ждет тебя!";

 //При нажатии на уведомление настраиваем действие перехода на сайт:
 Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("http://learn-android.ru"));
 PendingIntent intent2 = PendingIntent.getActivity(MainActivity.this, 0,
 intent1, PendingIntent.FLAG_CANCEL_CURRENT);

 //Настраиваем звук для уведомления и его закрытие после нажатия по нему пользователем:
 mMessage.defaults |= Notification.DEFAULT_SOUND;
 mMessage.flags |= Notification.FLAG_AUTO_CANCEL;

 //Сообщаем о нашем уведомлении системе:
 mMessage.setLatestEventInfo(context, contentTitle, contentText, intent2);
 //Запуск уведомления с его уникальным идентификатором:
 mNotManager.notify(mNotificationID, mMessage);
 }
 });

 //Обрабатываем действие кнопки Stop:
 mStop.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
 //Отменяем отображение уведомления:
 mNotManager.cancel(mNotificationID);
 }
 });
 }
}

Запускаем и смотрим, что получилось:

Мы запустили уведомление

Вот так, при нажатии на уведомление произойдет его закрытие и переход на сайт.

Категория: Уроки программирования | Просмотров: 1282 | Добавил: Oleg | Теги: Notification, уведомления, status bar, показываем уведомления, Android программирование | Рейтинг: 5.0/1
Всего комментариев: 1
avatar
1 borisenkodanil • 21:51, 03.10.2015
не работает, метод setLatestEventInfo устарел  sad
avatar