Notification(通知) 简单用法

Notification(通知) 是应用程序提醒用户某件事情已经发生了的一种方式,可以在“状态栏”和“通知托盘”中看到它。如我们更新程序的时候,可以通过Notification来实现下载进度。

Notification 可以有以下动作来增强用户提醒:

1.在状态栏中显示图标。

2.灯光:手机LED呼吸灯闪烁

3.发出声音提醒。

4.手机震动。

5.在通知托盘中显示更多的信息

一,创建Notification

Notification需要使用NotificationManager来管理。NotificationManager是用来处理Notification的系统服务。可以使用getSystemService来获取。创建Notification有两种方式

第一种:使用Notification实例

    //获取NotificationManager的引用
        final NotificationManager nManager = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
        //创建Notification
        //第一个参数:在状态栏中显示的图标,
        //第二个参数:在状态栏中显示的文本
        //第三个参数:时间戳,通知显示的时间,NotificationManager会按照这个时间来排序Notification
        final Notification notifi = new Notification(R.drawable.ic_launcher,"我的通知",System.currentTimeMillis());
        notifi.contentView=new RemoteViews(this.getPackageName(), R.layout.nview);

        Button btn2 = (Button) findViewById(R.id.Button01);
        btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //第一个参数:Notification的ID,如果ID相同那么会更新之前的Notification
                //第二个参数:Notification的实例
                nManager.notify(1, notifi);
            }
        });
        

第二种:使用NotificationBuilder(推荐这种方式)

        //获取NotificationManager的引用
        final NotificationManager nManager2 = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
        //使用Notification Builder创建通知
        Notification.Builder builder = new Notification.Builder(MainActivity.this);
        //设置通知在状态栏中的图标
        builder.setSmallIcon(R.drawable.ic_launcher);
        //通知在状态栏中显示的文本
        builder.setTicker("第一个");
        final Notification nf = builder.getNotification();
        //上面和下面这个方法所需的API版本不一样。功能是一样的
        //final Notification nf2 = builder.build();

        Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                nManager2.notify(1, nf);
            }
        });

二。Notification自定义View,点击自定义View中的按钮触发事件

可以使用RemoteViews来给Notification指定自定义View

NotificationManager nManager = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
Notification notifi = new Notification.Builder(this).build();
notifi.tickerText = "我的Notification";
notifi.when = System.currentTimeMillis();
notifi.icon = R.drawable.ic_launcher;
// 使用RemoteViews来给Notification指定自定义View
notifi.contentView = new RemoteViews(this.getPackageName(),
R.layout.nview);

// 点击自定义布局中的"打开相机“按钮打开相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
PendingIntent pi = PendingIntent.getActivity(this, 1, intent, 0);
//给自定义View指定PendingIntent
notifi.contentView.setOnClickPendingIntent(R.id.button2,pi);

// 发送通知
nManager.notify(1, notifi);

nview.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="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="打开照相机" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打开电话本" />

</LinearLayout>

Notification 还有更多的属性。可以参考API 。随着android api 版本的不同。对应的方法也会有些许修改。关于Notification的手机震动和LED灯,音效等。需要在AndroidMainfest.xml 中添加 震动,闪光等权限。有些手机ROM被优化过。可能效果不正确。

Notification(通知) 简单用法

时间: 2024-10-31 20:30:53

Notification(通知) 简单用法的相关文章

Android学习笔记二十之Toast吐司、Notification通知、PopupWindow弹出窗

Android学习笔记二十之Toast吐司.Notification通知.PopupWindow弹出窗 Toast吐司 Toast吐司是我们经常用到的一个控件,Toast是AndroidOS用来显示消息的一种机制,它与Dialog不同,Toast不会获取到焦点,通常显示一段时间之后就会自动消失,下面我们来介绍Toast的几种常用方式: 第一种,默认显示方式,也是最常用的方式: Toast.makeText(MainActivity.this, "这是默认的显示方式", Toast.LE

Android Notification通知详细解释

Android Notification通知具体解释 Notification: (一).简单介绍: 显示在手机状态栏的通知. Notification所代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification. Android3.0添加了Notification.Builder类.该类能够轻松地创建Notification对象. (二).Notification.Builder类中提供的方法: builder.setAutoCance

Android Notification通知详解

Android Notification通知详解 Notification: (一).简介: 显示在手机状态栏的通知.Notification所代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification. Android3.0增加了Notification.Builder类,该类可以轻松地创建Notification对象. (二).Notification.Builder类中提供的方法: builder.setAutoCancel();

android开发之notification通知完全解析

android开发之notification通知完全解析 本文主要介绍的是notification通知的使用,通过阅读此文,你可以了解,在android开发中,notification通知各种使用方法.本文的notification主要是针对android4.4以下的版本. 现在,我们来看一下,如何实现一个notification.估计大家现在最常用的做法是下面这种: Notification notification = new Notification(R.drawable.ic_launc

android之Notification通知

android之Notification通知 我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. [java] view plaincopy package cn.com.chenzheng_java; import android.app.Activity; import android.app.Notification; import android.

Android中AsyncTask的简单用法【转】

在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验.但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误.因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户.这样就解决了子线程更新UI的问题.但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题.因此android提供了

KVO的简单用法

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. //KVO是基于KVC的,观察者可以观察一个对象的某个属性(key),但这个属性的值(value)发生变化的时候,会触发一个事件 //KVO中涉及到以下几个概念 //被观察者 通常是  Model //观察者    通常是 Controller //key   被观察者的某个属性 //value

Android之Notification的多种用法

[置顶] Android之Notification的多种用法 标签: notification 2013-12-27 18:18 59635人阅读 评论(16) 收藏 举报  分类: android编程笔记(46)  版权声明:本文为博主原创文章,未经博主允许不得转载. 我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在

notification 通知

1. 定义一个方法 -(void) update{ } 2. 对象注册,并关连消息 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(update) name:@"update" object:nil] 3. 在要发出通知消息的地方 [[NSNotificationCenter defaultCenter]postNotificationName:@"update" ob