`
byandby
  • 浏览: 1696354 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 状态栏提示 (Notification、NotificationManager) 示例

阅读更多
    当有未接电话或短信时,在Android手机的顶部状态栏就会出现一个小图标,提示用户没有处理的快讯,这时用触笔按住状态栏往下拖动(在模拟器里用鼠标点住那个小图标往下拖动),就可以展开并查看这些快讯。Android平台专门提供了NotificationManager来管理状态栏信息,提供了Notification来处理这些快讯信息。因此,我们就可以很轻松地实现这一功能。
    首先通过getSystemService方法得到 NotificationManager 对象,我们可以对Notification的内容、图标、标题等属性进行设置;然后通过NotificationManager 对象的 notify方法执行一个Notification快讯。大家也可以去文档里边看看 里边也有 Notification 和 NotificationManager 的讲解 在文档的这个位置 Dev Guide-->Notifying the User ---->Creating Status Bar Notifications  这有一份翻译的还可以 http://blog.csdn.net/iamlazybone/archive/2010/10/22/5959598.aspx如果没有文档可以再这里下载http://www.android123.com.cn/android_kit.html
  我们大概要实现一个这样的东西。有四个按钮 我们点击一个按钮 就会发送一个通知消息并且在状态栏显示 通知 当我们查看这个通知消息的时候 我们一点击这个通知消息 就会 跳到另外一个Activity 点击不同的按钮 手机会有不同的反应 比如 震动、或者灯光、其实是没有的 因为我用的是模拟器。  我们要用到2个 Activity 所以也就会用到2个布局文件 先让我们看看运行效果。





man.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"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button01">
<requestFocus/>
</Button>

<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button02"
/>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button03"/>
<Button
android:id="@+id/Button04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button04"/>
</LinearLayout>

另外一个布局文件man2.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"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="这是Activity02 谢谢使用!"
    />
</LinearLayout>

下面分别为2个Activity
package xiaohang.zhimeng;

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.widget.Button;

public class Activity01 extends Activity {

	// 定义Button
	Button m_Button1, m_Button2, m_Button3, m_Button4;

	// 声明通知(消息)管理器 只要知道它是用来管理通知消息就行
	NotificationManager m_NotificationManager;
	Intent m_Intent;
	PendingIntent m_PendingIntent;
	// 声明Notification对象
	Notification m_Notification;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 初始化NotificationManager对象 Get a reference to the NotificationManager
		m_NotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

		// 获取4个按钮对象
		m_Button1 = (Button) findViewById(R.id.Button01);
		m_Button2 = (Button) findViewById(R.id.Button02);
		m_Button3 = (Button) findViewById(R.id.Button03);
		m_Button4 = (Button) findViewById(R.id.Button04);

		// 点击通知时转移内容也就是从哪个Activity跳到哪个Activity 这里是从Activity01跳到Activity02
		m_Intent = new Intent(Activity01.this, Activity02.class);
		// Pending这个词是“挂起”、“暂挂”的意思 我就理解为一个挂起 或者暂挂的 Intent 临时的留着一会用 xh
		// E文实在是差看不懂文档
		m_PendingIntent = PendingIntent.getActivity(Activity01.this, 0,
				m_Intent, 0);
		// 构造Notification对象 它就是一个通知消息对象 我们只要知道我们要在手机最上边状态栏通知消息的时候就用这个对象
		m_Notification = new Notification();
		// 给按钮m_Button1设置监听器
		m_Button1.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				// 设置通知在状态栏显示的图标
				m_Notification.icon = R.drawable.img1;
				// 当我们发送通知时在状态栏显示的内容 这个显示时暂时的大家试试就知道了
				m_Notification.tickerText = "Button1通知内容.......";
				// 通知时发出默认的声音 这个defaults是Notification的一个int型的变量
				// DEFAULT_SOUND是Notification这个类已经定义好的常量直接用就O 了
				m_Notification.defaults = Notification.DEFAULT_SOUND;
				// 设置通知显示的参数 (Context context, CharSequence contentTitle,
				// CharSequence contentText, PendingIntent contentIntent)
				// 参数1上下文对象Context 参数2 类似标题Title 这里大家试试 看看那些文字显示在那个位置明白意思就OK
				m_Notification.setLatestEventInfo(Activity01.this, "xhButton1",
						"Button1通 知", m_PendingIntent);
				// 可以理解为执行这个通知 或者说 由NotificationManager对象或者它的一个引用把
				// 通知发出去然后就会在状态栏显示了
				// 详细信息大家可以查看文档
				m_NotificationManager.notify(0, m_Notification);
			}
		});
		// 下边就不写了
		m_Button2.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				m_Notification.icon = R.drawable.img2;
				m_Notification.tickerText = "Button2通知内容........";
				// 通知震动
				m_Notification.defaults = Notification.DEFAULT_VIBRATE;
				m_Notification.setLatestEventInfo(Activity01.this, "Button2",
						"Button2通知", m_PendingIntent);
				m_NotificationManager.notify(0, m_Notification);
			}

		});

		m_Button3.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				m_Notification.icon = R.drawable.img3;
				m_Notification.tickerText = "Button3通知内容........";
				// 通知时屏幕发亮
				m_Notification.defaults = Notification.DEFAULT_LIGHTS;
				m_Notification.setLatestEventInfo(Activity01.this, "Button3",
						"Button3通知", m_PendingIntent);
				m_NotificationManager.notify(0, m_Notification);
			}

		});

		m_Button4.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				m_Notification.icon = R.drawable.img4;
				m_Notification.tickerText = "Button4通知内容........";
				// 通知时既震动又屏幕发亮还有默认的声音 这里用的是ALL
				m_Notification.defaults = Notification.DEFAULT_ALL;
				m_Notification.setLatestEventInfo(Activity01.this, "Button4",
						"Button4通知", m_PendingIntent);
				m_NotificationManager.notify(0, m_Notification);
			}

		});
	}
}


Activity02
package xiaohang.zhimeng;

import android.app.Activity;
import android.os.Bundle;

public class Activity02 extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//这里就灰常easy了设置个布局文件完事
		setContentView(R.layout.man2);
	}
	
}

如果拿着代码去执行 可能、也许、大概、还会遇到 这样一个异常
11-19 17:16:30.122: ERROR/AndroidRuntime(239): java.lang.SecurityException: Requires VIBRATE permission
这是动因为我们代码里边用了震功能 所以要在 AndroidManifest.xml中声明 震动的权限
  <uses-permission android:name="android.permission.VIBRATE" />

那就在来几个可能会用到的 权限声明
打电话权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
使用状态栏权限:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

获取当前或最近运行的任务的信息的权限:
<uses-permission android:name="android.permission.GET_TASKS" />

读取通信录权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
设置壁纸权限:
<uses-permission android:name="android.permission.SET_WALLPAPER" />

允许程序设置壁纸hits的权限:
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />

使用震动功能权限:
<uses-permission android:name="android.permission.VIBRATE" />

修改删除launcher.db内容权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

绑定widget权限:
<uses-permission android:name="android.permission.BIND_APPWIDGET" />

读取launcher.db内容权限:
<uses-permission android:name="net.sunniwell.launcher.permission.READ_SETTINGS" />

修改删除launcher.db内容权限:
<uses-permission android:name="net.sunniwell.launcher.permission.WRITE_SETTINGS" />



源码 见 附件
  • 大小: 22.8 KB
  • 大小: 49.9 KB
  • 大小: 30.6 KB
分享到:
评论
1 楼 苹果超人 2011-06-20  
引用
点击通知时

点击通知是指什么?

相关推荐

    Android 在状态栏添加Notification信息图标及提示.rar

    这个例子演示Android 在状态栏添加Notification信息图标及提示,相信大家对这个功能已经不陌生了,手机中安装的APP,一般都会在后台运行,时不时会在手机顶部的状态栏中显示应用的图标,滑出状态栏会看到详细的信息...

    android 状态栏通知(Notification)的默认和自定义

    在Android开发中,状态栏通知(Notification)是与用户交互的重要方式,即使应用在后台运行,也能通过通知向用户传达信息。本篇文章将详细介绍如何实现Android状态栏通知的默认形式以及自定义设置。 首先,创建默认...

    android Notification通知消息学习(NotificationManager)

    在Android系统中,Notification是应用与用户交互的重要方式,它能够在状态栏中显示消息,即使用户不在使用应用程序也能接收到相关信息。这篇博文“android Notification通知消息学习(NotificationManager)”显然是...

    android状态栏显示

    在Android开发中,状态栏(StatusBar)是用户界面不可或缺的一部分,它显示了系统时间、电池状态、网络连接等重要信息。有时候,开发者需要对状态栏进行定制,例如改变颜色、图标或者隐藏/显示状态栏,以实现特定的...

    Android中使用Notification提示消息示例

    在Android应用开发中,Notification是向用户展示非交互式消息的一种关键机制,它可以在状态栏显示,即使用户不在与应用程序交互时也能提醒用户有新的事件发生。本示例将详细介绍如何在Android中使用Notification来...

    Android高级应用源码-状态栏通知小图标,notification通知.zip

    此压缩包"Android高级应用源码-状态栏通知小图标,notification通知.zip"显然包含了关于如何在Android应用中实现状态栏通知,特别是定制小图标的示例代码。 状态栏通知通常由三部分组成:通知图标、通知标题和通知...

    Android studio发送状态栏通知Notifycation demo

    在Android开发中,状态栏通知(Notification)是与用户交互的一种常见方式,它可以在不干扰用户当前活动的情况下向用户传达信息。本示例是关于如何使用Android Studio创建一个简单的状态栏通知的演示。通过理解并...

    android 状态栏

    在Android系统中,状态栏(StatusBar)是手机屏幕顶部显示时间、电量、网络信号以及通知等信息的区域,它是用户与系统交互的重要组成部分。本文将深入探讨Android状态栏的相关知识点,包括状态栏的定制、通知的管理...

    Android代码-状态栏通知小图标notification通知.rar

    "Android代码-状态栏通知小图标notification通知.rar"这个压缩包很可能是包含了一些示例代码,用于展示如何创建和定制状态栏通知,特别是关于小图标的使用。 首先,我们要理解Android中的状态栏通知是如何工作的。...

    Notification的示例源码

    在Android开发中,`Notification`是用户界面的一个关键组件,用于在状态栏中显示消息,即使应用程序在后台运行,也能提醒用户有新的活动或事件发生。`Notification`的设计旨在提供一致且非侵入性的用户体验,使得...

    状态栏通知小图标,notification通知

    状态栏通知小图标,通常被称为`Notification`,是Android系统中一种重要的用户界面元素,用于在状态栏上显示应用的提醒或消息。这些小图标在用户不与应用直接交互时提供了一个简短的信息提示,帮助用户了解应用的...

    android消息通知栏Notification

    在Android系统中,`Notification`是开发者用于向用户展示非交互式信息的重要工具,它通常出现在状态栏中,用户可以通过下拉通知栏查看并交互。`Notification`可以在应用不处于前台运行时,依然向用户传达重要的消息...

    Android学习下 toast notification用法.rar

    Notification则是在状态栏中显示信息,用户即使离开应用也能看到。创建一个Notification需要使用`NotificationCompat.Builder`类,设置标题、内容、图标等属性,然后通过`NotificationManager`发送。例如: ```...

    安卓Android源码——实现Notification的通知栏常驻.zip

    首先,Notification在Android中是一个类,位于`android.app.Notification`包下,它用于在状态栏和通知中心展示信息。创建一个Notification通常涉及以下几个步骤: 1. **构建Notification对象**:使用`Notification....

    安卓Android源码——实现Notification的通知栏常驻.rar

    在安卓开发中,Notification是应用与用户交互的重要方式,它能够在状态栏显示消息,即使用户不在应用程序中,也能提醒用户有新的活动或信息。本文将深入解析如何通过Android源码实现一个通知栏常驻的Notification。 ...

    Notification示例

    在Android开发中,Notification是应用与用户交互的重要方式,它能够在状态栏中向用户展示信息,即使用户不在应用中也能接收到消息提醒。本示例着重讲解了如何创建和使用不同类型的Notification,包括普通...

    Android应用源码之notification.zip

    在Android开发中,Notification是应用与用户交互的重要方式,它能够在状态栏中显示信息,即使用户不在使用应用程序时也能提醒用户有新的事件发生。"Android应用源码之notification.zip"这个压缩包很可能是包含了关于...

    android通知栏提示下载进度源码

    "android通知栏提示下载进度源码"是一个示例项目,它展示了如何在Android的通知栏创建一个更新下载进度的提示。下面,我们将详细讲解这个知识点。 1. **Android通知栏基础** - Android的通知栏用于展示各种提醒和...

Global site tag (gtag.js) - Google Analytics