专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 移动开发

Notification类跟PendingIntent类

发布时间:2010-05-29 22:29:48 文章来源:www.iduyao.cn 采编人员:星星草
Notification类和PendingIntent类

Notification

一、概述
Notification是Android中一个重要的系统服务,Notification显示通知信息在手机状态栏,手机状态栏位于屏幕最上方,那里通常显示手机当前的网络状态、电池状态、时间、短信等。Notification代表的是一种具有全局效果的通知,Notification对象要通过NotificationManager(通知管理器类)的对象来发送。

二、Notification类

1)概述
Notification类用于存放通知标题、内容、图标以及发送的目标对象。

2)常用属性

1.icon:通知的图标
示例代码:
Notification notif = new Notification();
notif.icon = R.drawable.ic_launcher;
说明:第一行创建通知对象,第二行设置通知对象的icon的图标,该图标用了Android默认的图标,也可以是其它图片。

2.tickerText:通知标题,该标题显示在窗口的状态栏中。
示例代码:notif.tickerText="通知来啦";

3.flags:设置通知状态的标志值,有如下可选常量值:
FLAG_AUTO_CANCEL:在通知栏点击此通知后通知被清除。
FLAG_INSISTENT:重复发出声音,直到用户响应此通知。
FLAG_ONGOING_EVNET:将此通知放到通知栏的"Ongoing"即"正在运行"组中
FLAG_NO_CLEAR:禁止手动清除此通知。

4.defaults:设置通知的默认属性,默认属性包含声音提示、震动提示、闪光提示等。
其中:
DEFAULT_SOUND:默认声音
DEFAULT_VIRBATE:默认震动
DEFAULT_LIGHTS:默认闪光灯
ALL:使用默认声音、默认震动和默认闪光灯。

5.public int contentIntent:存放一个PendingIntent类型的对象
PendingIntent类稍后介绍。

6.public int contentView:存放一个RemoteView类型的对象。使用该对象可以在状态栏显示如下载进度这类的效果。

 

PendingIntent类

1、概述
1)PendingIntent用于描述Intent及其最终的行为。
2)PendingIntent对象可以递交给其它应用程序,然后继续处理。这样可稍后才处理PendingIntent中描述的Intent及其最终行为。



2、常用方法

1)public static PendingIntentgetActivity(Context context,int

requestCode,Intent intent,int flags)
作用:从系统取得一个用于启动目标(Intent中设置)Activity的

PendingIntent对象。
参数——context:当前组件的对象。
参数——requestCode:请求码,用0即可。
参数——intent:intent对象,用于指定通知的目标组件。
参数——flags:设置通知类型,有两个常用的可选值:
1.FLAG_CANCEL_CURRENT:设定在提取PendingIntent时,先关闭之前的PendingIntent实例,这样得到的PendingIntent就是新的了。

2.FLAG_UPDATE_CURRENT:设置新的Intent更新之前的PendingIntent中的Intent对象数据,例如更新Intent中的Extras。

提示:本应用中设置flags值为0即可。


2)public static PendingIntent getService(Context context,int

requestCode,Intent intent,int flags)
作用:从系统取得一个用于启动目标Service的PendingIntent对象

3)public static PendingIntent getBroadcast(Context context,int

requestCode,Intent intent,int flags)
作用:从系统取得一个用于启动BroadcastReceiver的Intent广播的PendingIntent对象。


 

 

 

值得一提的就是:

使用Notification notif = new Notification(R.drawable.ic_launcher,"通知来了!",System.currentTimeMillis());的方法已经落伍了,所以不能够使用该方法,需要改用Notification.Builder来替代

 

 

实际案例:

 

package com.jxust.day07_01_notificationdemo;

import android.annotation.SuppressLint;
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.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;

@SuppressLint("NewApi")
public class MainActivity extends Activity {

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

	private void setListener() {
		findViewById(R.id.btnSendNotification).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 创建启动目标Activity的Intent对象
				Intent intent = new Intent(MainActivity.this, SecondActivity.class);
				// 创建PendingIntent对象
				PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
				// 创建Notification对象 已过时
				// Notification notif = new
				// Notification(R.drawable.ic_launcher,"通知来了!",System.currentTimeMillis());
				// 设置点击通知的监听
				// notif.setLatestEventInfo(MainActivity.this,
				// "你有软件可以更新", "点击开始更新", pi); 已过时
				
				// 创建通知管理器对象	/ 获得系统服务
				NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);	

				// 系统推荐的新用法
				Notification.Builder builder = new Notification.Builder(MainActivity.this);
				builder.setContentTitle("你有软件可以更新");
				builder.setContentText("点击开始更新");
				builder.setSmallIcon(R.drawable.ic_launcher);
				builder.setContentIntent(pi);		// 这个就是可以通过点击来跳到另一个Activity的作用
				Notification notification = builder.build();
				// 发送通知
				manager.notify(88,notification);
			}
		});
	}

}

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/btnSendNotification"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送通知" />

</RelativeLayout>

 

package com.jxust.day07_01_notificationdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class SecondActivity extends Activity {

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

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is
		// present.
		getMenuInflater().inflate(R.menu.second, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

 

 

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jxust.day07_01_notificationdemo.SecondActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second Activity" />

</RelativeLayout>

 

 

效果如下:

 

 

 

通过点击创建出来的Notification可以跳转到SecondActivity



 

 

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: