Главная » Учимся создавать 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);
}
});
}
}
Запускаем и смотрим, что получилось: Вот так, при нажатии на уведомление произойдет его закрытие и переход на сайт. | |
|
Всего комментариев: 1 | |
| |