`

Status Notification

 
阅读更多

Status Notification是作用是在页眉的位置,提示用户某一项操作已完成或者请求用户交互,当用户选择并点击后,会启动相应的操作。比如Service的下载任务完成,可以用此方法提醒用户;还有比如未接电话提示等等。

 

后台的Service不应该为了得到用户的交互去启动一项Activity,而应该生成一个Status Notification,当用户选择点击后,这个Status Notification去启动Activity。

 

一个Status Notification包含Status Bar和Notification Message两部分。

 

Activity和Service都可以初始化一个Status Notification。但是由于Activity只能处于前端且获得焦点才能执行动作,所以总是在Service中生成Status Notification。这样,Notification就可以在后台生成,比如用户在运行其他应用或者设备睡眠的时候。

 

生成Notification,需要用到两个类:Notification和NotificationManager。

 

 

package com.test.statusnotificationdemo;

import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

	@Override
	protected void onStart()
	{
		// TODO Auto-generated method stub
		super.onStart();
		
		//创建NotificationManager,这里并不是用New方法
		//创建的mNotificationManager对象负责"发出"和"取消"notification
		NotificationManager mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
		
		
		//这里是设置notification的bar,三个参数分别是在bar上显示的图标、信息、时间
		Notification notification=new Notification(R.drawable.ic_launcher, "Hello", System.currentTimeMillis());
		
		
		//PendingIntent是一个封装好的Intent,它并不立即执行,而且等待事件来触发
		//Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
		//getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
		Context context=getApplicationContext();	
		CharSequence contextTitle="My notification";
		CharSequence contextText="Hello World!";
		Intent notificationIntent=new Intent(this,NotificaitionActivity.class);
		//PendingIntent 为Intent的包装,这里是启动Intent的描述,PendingIntent.getActivity 返回的PendingIntent表示,此PendingIntent实例中的Intent是用于启动 Activity 的Intent。
		PendingIntent contentIntent=PendingIntent.getActivity(this, 0, notificationIntent, 0);
		notification.setLatestEventInfo(context, contextTitle, contextText, contentIntent);//四个参数分别为:所在的Activity或application、详细信息Title、详细信息内容Text、相应的Intent
		
		
		//用mNotificationManager发出notification
		int HELLO_ID=1;//用于notification的标识
		mNotificationManager.notify(HELLO_ID, notification);
		
	}
    

    
}
分享到:
评论

相关推荐

    Avaya Agent Status Notification Light:Avaya的座席状态通知灯-开源

    AgentLight是用于Avaya联系中心的座席状态通知的软件。 该软件与USB照明设备集成在一起,并通过打开或闪烁不同颜色的设备来显示座席状态。 例如,该软件可以配置为以绿色显示座席空闲和正在呼叫时显示红色。

    Android NOtification 使用

    Notification分为多种类型,包括Toast、StatusBar Notification和Dialog Notification,每种都有其特定的使用场景。 1. Toast Notification: Toast是一种短暂的通知方式,它在屏幕上显示一段时间后自动消失,不会...

    SNSNotificationBadge,安卓、LG、维梧、ZUK、HTC、诺华与安道尔ID。.zip

    项目名称中的"SN"可能代表"Status Notification"或"Simple Notification",表明这是一个关注通知状态的库。"NotificationBadge"直译为"通知徽章",正是该库的核心功能。它支持多种品牌和型号的Android设备,包括但不...

    电子邮件的基础知识 smtp协议

    1995年,SMTP进行了扩展,引入了EHLO命令,以支持更多的ESMTP命令,如DSN(Delivery Status Notification)提供邮件状态通知,以及ETRN( Expedited Transport Reversal)允许客户端请求邮件的批量投递。这些扩展...

    JavaMail 驱动

    4. **DSN(Delivery Status Notification)支持**:dsn.jar 提供了回执和通知功能,可以获取邮件的传递状态,这对于跟踪邮件是否成功送达非常重要。 5. **Mail API**:mailapi.jar 是JavaMail的核心库,包含了所有...

    CANopen学习笔记

    8. **DSN(Device Status Notification)**:设备状态通知服务用于节点向主设备报告其当前状态,例如电源状态、故障状态等。 9. **CIA DSP(CiA Device Services Profile)**:CiA设备服务配置文件是一组规定的服务...

    非常好的东西-javamail

    7. **dsn.jar**:Delivery Status Notification (DSN) 是一种邮件返回通知机制,告知发件人邮件是否成功送达或被拒绝。这个jar文件可能包含了DSN相关功能的实现,帮助开发者跟踪邮件的交付状态。 使用这些jar文件,...

    邮件代码相关jar包

    2. **dsn.jar**:Delivery Status Notification (DSN) 是一种邮件协议,允许发送者知道邮件是否成功送达或者被接收者拒绝。DSN.jar包含了处理邮件回执和非投递报告(NDR,也称为退信)所需的功能。 3. **imap.jar**...

    Exchange Server 退信(NDR)及解决方案总汇

    这些代码基于**传递状态通知(Delivery Status Notification,简称DSN)**的标准,详细记录了邮件递送过程中遇到的各种情况。DSN的数字代码分为三类: 1. **成功(2.X.X)**:表示邮件已经成功递送到目标邮箱。 2. ...

    上海通用术语.pdf

    11. GP4(Production Part Approval Status Notification):生产件批准状况通知,表明零部件已通过质量验证,可以投入生产。 12. GP5(Supplier Quality Monitoring Process (GM1746)):供应商质量监控流程,确保...

    如何隐藏Android4.0及以上版本的ActionBar、NotificationBar、StatusBar、SystemBar、TitleBar

    ### 如何隐藏Android 4.0及以上版本的ActionBar、NotificationBar、StatusBar、SystemBar、TitleBar 在Android应用开发过程中,有时为了实现特定的设计效果或界面需求,开发者可能需要隐藏某些系统组件,如...

    RAM清理软件htcAddictscleanRAM_1.7

    Version 0.9.2 - Fixed: problem with "RAM Status Notification" screen and other small issues 【使用方法】直接复制到PDA中,安装和运行。去掉官方语言文件,采用核心汉化。 【特别提示】CAB和绿色 =====...

    StatusBar使用

    #### 一、StatusBar与Notification概述 StatusBar,即状态栏,在移动设备上是一种常见的用户界面元素,用于显示设备的状态信息,如信号强度、时间、电池电量等。同时,状态栏还承载了一个重要的功能——...

    带进度条,以及动态状态图标的Notification

    3. **动态状态图标(Dynamic Status Icons)**: - 动态图标常用于表示某过程的状态,例如加载中的循环箭头,完成时的勾号等。 - 可通过创建自定义的`RemoteViews`并在其中设置动画或者状态变化的图片来实现。 - ...

    带进度条(ProgressBar)的Notification

    int progress = (int) (100 * currentStatus / totalStatus); builder.setProgress(100, progress, false); notificationManager.notify(NOTIFICATION_ID, builder.build()); ``` 4. **完成任务**:任务完成后,...

    ANDROID STATUSBAR

    本篇文章将详细介绍 Android 系统中的状态栏(StatusBar)以及如何通过简单的代码实现自定义的通知(Notification)。状态栏是 Android 设备顶部的一个区域,它显示了时间、电池电量、网络连接状态等基本信息。此外...

    SystemUI_StatusBar分析图片

    在Android系统中,SystemUI是用户界面的重要组成部分,它包含了状态栏(StatusBar)、通知面板(Notification Panel)等关键元素。本篇文章将详细分析Android 4.0冰淇淋三明治(Ice Cream Sandwich,简称ICS)中的SystemUI...

    (0092)-iOS/iPhone/iPAD/iPod源代码-状态栏(Status Bar)-Discreet Notification View

    "在窗口顶端或者下端弹出自定义的提示视图(notification View)。例如,图中上方的黑色标签“This is the notification.""。可用于显示当前app的状态,用户操作的提示等等。" 注意:请在Mac下解压使用

Global site tag (gtag.js) - Google Analytics