Android使用Notification在状态栏上显示通知

在使用手机时,当有未接来电或者是新短消息时,手机会给出相应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。Android也提供了用于处理此类信息的类,他们是Notification和NotificationManager。其中,Notification代表的是具有全局效果的通知;而NotificationManager则是用于发送Notification通知的系统服务。

使用Notification和NotificationManager类发送和显示通知也比较简单,大致可分为以下4个步骤。

(1)调用getSystemService()方法获取系统的NotificationManager服务。
(2)创建一个Notification对象,并为其设置各种属性
(3)为Notification对象设置事件信息
(4)通过NotificationManager类的notify()方法发送Notification通知

下面通过一个具体的实例说明如何使用Notification在状态栏上显示通知:
res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:id="@+id/layout1"
  android:gravity="center_horizontal"
  >
  <Button android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="显示通知"/>
  <Button android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="删除通知"/>
</LinearLayout>

这个是点击通知跳转的页面main2.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > 

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这里是详细内容"/>
</LinearLayout>

在中AndroidManifest.xml添加一下两个权限,并在<application>标签中注册ContentActivity:

<!-- 添加操作闪光灯的权限 -->
  <uses-permission android:name="android.permission.FLASHLIGHT"/>
<!-- 添加操作震动器的权限 -->
  <uses-permission android:name="android.permission.VIBRATE"/>
<application>
<activity android:name=".ContentActivity"/>
</application>

MainActivity:

package com.example.test;  

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

public class MainActivity extends Activity {
   public static int NOTIFYID_1=1,NOTIFYID_2=2;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);  

    //获取通知管理器,用于发送通知
    final NotificationManager notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

    Button button1=(Button) findViewById(R.id.button1);//获取"显示通知"按钮
    //为"显示通知"按钮添加单击事件监听器
    button1.setOnClickListener(new OnClickListener() { 

      @Override
      public void onClick(View arg0) {
        Notification notify=new Notification();//创建一个Notification对象
        notify.icon=R.drawable.in;
        notify.tickerText="显示第一个通知";
        notify.when=System.currentTimeMillis();//设置发送时间(设置为当前时间)
        notify.defaults=Notification.DEFAULT_ALL;//设置默认声音、默认震动和默认闪光灯
        notify.setLatestEventInfo(MainActivity.this, "无题", "每天进步一点点", null);//设置事件信息
        notificationManager.notify(NOTIFYID_1,notify);//通过通知管理器发送通知 

        //添加第二个通知
        Notification notify1=new Notification(R.drawable.music,"显示第二个通知",System.currentTimeMillis());
        notify1.flags=Notification.FLAG_AUTO_CANCEL;//打开应用程序后图标消失
        Intent intent=new Intent(MainActivity.this,ContentActivity.class);//设置为跳转页面准备的Intent
        //针对意图的包装对象,在下面就是通知被点击时激活的组件对象(上下文,请求码,意图对象,标识符)
        PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
        //设置通知的内容  (上下文对象,标题, 内容, 指定通知被点击的时候跳转到哪里,激活哪个组件)
        notify1.setLatestEventInfo(MainActivity.this, "通知", "查看详细内容", pendingIntent);
        notificationManager.notify(NOTIFYID_2,notify);//通过通知管理器发送通知
      }
    }); 

    Button button2=(Button) findViewById(R.id.button2);//获取"删除通知"按钮
    //为"显示通知"按钮添加单击事件监听器
    button2.setOnClickListener(new OnClickListener() { 

      @Override
      public void onClick(View arg0) {
        notificationManager.cancel(NOTIFYID_1);//清除ID号为常量NOTIFYID_1的通知
        notificationManager.cancelAll();//清除全部通知
      }
    });
  }
} 

运行本实例,单击"显示通知"按钮,在屏幕的左上角将显示第一个通知,如图-4.2.2.a.jpg所示,过一段时间后,该通知消失,并显示第二个通知,再过一段时间后,第二个通知消失,这时在状态栏上将显示这两个通知的图标,如图-4.2.2.b.jpg所示,单击通知图标,将显示如图-4.2.2.c.jpg所示的通知列表,单击第一个列表项,可以查看通知的详细内容,如图-4.2.2.d.jpg所示,查看后,该通知的图标将不在状态栏中显示。单击"删除通知"按钮,可以删除全部通知。

图-4.2.2.a.jpg:

图-4.2.2.b.jpg:

图-4.2.2.c.jpg:

图-4.2.2.d.jpg:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android中通知Notification使用实例(振动、灯光、声音)
  • Android中通过Notification&NotificationManager实现消息通知
  • android中创建通知栏Notification代码实例
  • Android开发 -- 状态栏通知Notification、NotificationManager详解
  • android使用NotificationListenerService监听通知栏消息
  • 详解Android中Notification通知提醒
  • Android种使用Notification实现通知管理以及自定义通知栏实例(示例四)
  • Android 使用AlarmManager和NotificationManager来实现闹钟和通知栏
  • Android开发之Notification通知用法详解
  • Android 通知使用权(NotificationListenerService)的使用
(0)

相关推荐

  • Android 通知使用权(NotificationListenerService)的使用

    Android  通知使用权(NotificationListenerService)的使用 简介 当下不少第三方安全APP都有消息管理功能或者叫消息盒子功能,它们能管理过滤系统中的一些无用消息,使得消息栏更清爽干净.其实此功能的实现便是使用了Android中提供的通知使用权权限.Android4.3后加入了通知使用权NotificationListenerService,就是说当你开发的APP拥有此权限后便可以监听当前系统的通知的变化,在Android4.4后还扩展了可以获取通知详情信息.下面

  • Android中通过Notification&NotificationManager实现消息通知

    notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户.它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径. 1.新建一个android项目 我新建项目的 minSdkVersion="11",targetSdkVersion="19".也就是支持最低版本的3.0的. 2.习惯性地打开项目清单文件AndroidManifest.xml,添加一个权限:&

  • Android种使用Notification实现通知管理以及自定义通知栏实例(示例四)

    示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我们的通知栏仅仅是更改传来短信的数目,而不是对每条短信单独做一个通知栏用于提示. 修改通知 可以设置一条通知,当然可以更新一条通知,我们通过在调用NotificationManager.notify(ID, notification)时所使用的ID来更新它.为了更新你之前发布的通知,你需要更新或者创建

  • Android开发 -- 状态栏通知Notification、NotificationManager详解

    本想自己写一个的,但是看到这篇之后,我想还是转过来吧,实在是非常的详细: 在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationManager . Notification. NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等. NotificationManager 是一个系统Service,必须通过 getSys

  • Android 使用AlarmManager和NotificationManager来实现闹钟和通知栏

    实现闹钟运行的效果如下: 通知栏的运行后效果图如下: 布局文件(activity_main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&qu

  • Android开发之Notification通知用法详解

    本文实例讲述了Android开发之Notification通知用法.分享给大家供大家参考,具体如下: 根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时,把notification从通知栏里去掉.或者,只要程序在运行就一直显示通知栏图标. 下面对Notification类中的一些常量,字段,方法简单介绍一下: 常量: DEFAULT_ALL 使用所

  • android使用NotificationListenerService监听通知栏消息

    NotificationListenerService是通过系统调起的服务,在应用发起通知时,系统会将通知的应用,动作和信息回调给NotificationListenerService.但使用之前需要引导用户进行授权.使用NotificationListenerService一般需要下面三个步骤. 注册服务 首先需要在AndroidManifest.xml对service进行注册. <service android:name=".NotificationCollectorService&q

  • 详解Android中Notification通知提醒

    在消息通知时,我们经常用到两个组件Toast和Notification.特别是重要的和需要长时间显示的信息,用Notification就最 合适不过了.当有消息通知时,状态栏会显示通知的图标和文字,通过下拉状态栏,就可以看到通知信息了,Android这一创新性的UI组件赢得了用户的一 致好评,就连苹果也开始模仿了.今天我们就结合实例,探讨一下Notification具体的使用方法.  首先说明一下我们需要实现的功能是:在程序启动时,发出一个通知,这个通知在软件运行过程中一直存在,相当于qq的托盘

  • android中创建通知栏Notification代码实例

    ///// 第一步:获取NotificationManager NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); ///// 第二步:定义Notification Intent intent = new Intent(this, OtherActivity.class); //PendingIntent是待执行的Intent PendingIntent pi

  • Android中通知Notification使用实例(振动、灯光、声音)

    本文实例讲解了通知Notification使用方法,此知识点就是用作通知的显示,包括振动.灯光.声音等效果,分享给大家供大家参考,具体内容如下 效果图: MainActivity: import java.io.File; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; im

随机推荐