【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:

转载请注明出处:http://blog.csdn.net/acmman/article/details/45009467

时间: 2024-12-30 23:47:25

【Android开发】消息提示框与对话框-使用Notification在状态栏上显示通知的相关文章

【Android开发】消息提示框与对话框-使用AlertDialog创建对话框

AlertDialog类的功能十分强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框,概括起来有一下4种: 1.带确定.中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加.例如,不需要中立按钮,则可以只生成带有确定和取消按钮的对话框,也可以是只需有一个按钮的对话框. 2.带列表的列表对话框 3.带多个单选列表项和N个按钮的列表对话框 4.带多个多选列表项和N个按钮的列表对话框 在使用AlertDialog类生成对话框时,常用的方法如下所示: setTi

【Android开发】消息提示框与对话框-使用Toast显示消息提示框

在前面的实例中,已经应用过Toast类来显示一个简单的提示框了.这次将对Toast进行详细介绍.Toast类用于在屏幕中显示一个消息提示框,该消息提示框没有任何控制按钮,并且不会获得焦点,经过一段时间后自动消失.通常用于显示一些快速提示信息,应用范围非常广泛. 使用Toast来显示消息提示框非常简单,只需要一下三个步骤: (1).创建一个Toast对象.通常有两种方法:一种是使用构造方式进行创建: Toast toast=new Toast(this); 另一种是调用Toast类的makeTex

微信小程序-消息提示框实例_javascript技巧

做Android的时候对toast是很熟悉的.微信小程序开发中toast也是重要的消息提示方式. 提示框: wx.showToast(OBJECT) 显示消息提示框 OBJECT参数说明: 示例代码: wx.showToast({ title: '成功', icon: 'success', duration: 2000 }) wx.hideToast() 隐藏消息提示框 wx.showToast({ title: '加载中', icon: 'loading', duration: 10000 }

用javascript作消息提示框(类似于QQ用户上线的消息提示)

javascript 在开发项目的时候,需要在有用户消息的时候提醒用户,刚好自己的QQ好友上线,QQ自动弹出一个消息提示,觉得不错.所以用javascript利用popup作了一个类似的功能. <html> <head>  <title>HTMLPage1</title>  <meta name="vs_defaultClientScript" content="JavaScript">  <meta

JS实时弹出新消息提示框并有提示音响起的实现代码_javascript技巧

在java web认证系统开发中,客户要求有数据更新时要在页面弹出提示框,这样方便在旁边的工作人员可以及时的知道有新数据提交了,我们除了使用及时的推送技术外还可以使用ajax来实现这些功能. 代码实现的原理,在页面启用定时执行ajax请求,如果获得数据是最新状态的,要执行语音提示和弹出框提示,这样实现的弊端是频繁的调用数据库,该方法只适合于使用人数较少的系统. 1.加入语音提示 <audio id="sound" autoplay="autoplay">

Android开发必知 九种对话框的实现方法_Android

在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的.在看具体实例之前先对AlertDialog做一个简单介绍.AlertDialog是功能最丰富.实践应用最广的对话框,它可以生成各种内容的对话框.但实际上AlertDialog生成的对话框总体可分为以下4个区域:图标区.标题区.内容区.按钮区. 这里总结了九种对话框的实现方法,有需要的朋友可以来学习下了   除了popupwindow实现稍微麻烦一点,其他形似都相对简单,熟悉2便即可 直

MFC上下浮动与渐入渐出消息提示框实现

类似QQ与360软件,消息提示有两种.上下浮动.渐入渐出. 1.上下浮动提示框实现 机制,定时器响应上下浮动消息. 主要API:MoveWindow. 源码如下UpDownTipDlg.h.UpDownTipDlg.cpp. UpDownTipDlg.h [cpp] view plaincopy /*  *@brief 上下浮动提示框  *@date 2012-8-9  */   #pragma once         // CUpDownTipDlg dialog      class CU

Android开发必知 九种对话框的实现方法

在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的.在看具体实例之前先对AlertDialog做一个简单介绍.AlertDialog是功能最丰富.实践应用最广的对话框,它可以生成各种内容的对话框.但实际上AlertDialog生成的对话框总体可分为以下4个区域:图标区.标题区.内容区.按钮区. 这里总结了九种对话框的实现方法,有需要的朋友可以来学习下了 除了popupwindow实现稍微麻烦一点,其他形似都相对简单,熟悉2便即可 直接上

IOS开发:提示框的正确实现方式

 开发:提示框的正确实现方式-"> 在从iOS8到iOS9的升级过程中,弹出提示框的方式有了很大的改变,在Xcode7 ,iOS9.0的SDK中,已经明确提示不再推荐使用UIAlertView,而只能使用UIAlertController,我们通过代码来演示一下. 我通过点击一个按钮,然后弹出提示框,代码示例如下: [objc] view plaincopyprint? #import "ViewController.h" @interface ViewControll