Android-Notification (通知实现)
1、通知实现步骤
在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。
Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager。其中,Notification代表的是具有全局效果的通知,而NotificationManager则是用于发送Notification通知的系统服务。
使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下四个步骤
(1)调用getSystemService() 方法获取系统的NotificationManager服务
(2)创建一个Notification对象,并为其设置各种属性
(3)为Notification对象设置事件信息
(4)通过NotificationManager类的notify()方法发送Notification通知
下面通过一个实例说明和使用Notification在状态栏上显示通知
2、基本实现
2.1效果图
手机 小米4 ,是有声音和震动的,这里没办法展示;
2.2 布局实现
两个按钮:
- <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"
- tools:context="${relativePackage}.${activityClass}" >
- <TextView
- android:id="@+id/textView1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/hello_world" />
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentRight="true"
- android:layout_below="@+id/textView1"
- android:layout_marginTop="16dp"
- android:text="发送通知" />
- <Button
- android:id="@+id/button2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentRight="true"
- android:layout_below="@+id/button1"
- android:text="取消通知" />
- </RelativeLayout>
2.3 代码实现
- package com.example.studydemo7;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.app.Notification;
- import android.app.Notification.Builder;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class MainActivity extends Activity {
- private Button button1,button2;
- //通知 是通过 NotificationManager 来管理的
- private NotificationManager manager;
- private final int NOTIFICATION_ID=1;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //初始化 得到 通知 系统服务
- manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- button1=(Button) findViewById(R.id.button1);
- button2=(Button) findViewById(R.id.button2);
- button1.setOnClickListener(new button1ClickListener());
- button2.setOnClickListener(new button2ClickListener());
- }
- class button1ClickListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- //发送通知
- sendNotification();
- }
- }
- class button2ClickListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- //取消通知
- manager.cancel(NOTIFICATION_ID);
- }
- }
- @SuppressLint("NewApi")
- private void sendNotification(){
- //通过 Builder 来创建 Notification 的
- Builder builder=new Notification.Builder(this);
- //设置 通知 图标
- builder.setSmallIcon(R.drawable.ic_launcher);
- //设置 通知 显示标题
- builder.setTicker("Hi");
- //设置 通知栏 标题
- builder.setContentTitle("StudyDemo");
- //设置 通知内容
- builder.setContentText("StudyDemo 需要更新了!");
- //builder.setWhen(System.currentTimeMillis());//设置通知时间
- //设置 提醒 声音/震动/指示灯
- builder.setDefaults(Notification.DEFAULT_ALL);
- //builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯
- //builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音
- //builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动
- //设置 点击后的跳转 通过 pendingIntent 实现
- Intent intent=new Intent(this,MainActivity.class);
- PendingIntent pendingIntent=PendingIntent.getActivity(this,0, intent,0);
- builder.setContentIntent(pendingIntent);
- //创建 通知
- //安卓4.1 及其 以上使用 build()方法 ,以下的使用 builder.getNotification();
- Notification notification=builder.build();
- manager.notify(NOTIFICATION_ID, notification);
- }
- }
<uses-permission android:name="android.permission.VIBRATE">
<uses-permission android:name="android.permission.FLASHLIGHT"></uses-permission></uses-permission>