Notification用法

本文介绍了Notification的用法。

1、示例演示用法

1)NotificationActivity.java

/**
 * 演示了Notification的用法
 * Notification的创建、显示、删除
 * 通知栏点击Notification打开Activity、Service、Broadcast
 * 直接new一个Notification或通过Notification.Builder来创建
 * 自定义Notification的视图并点击交互
 */
public class NotificationActivity extends Activity {
	private BroadcastReceiver mBroadcastReceiver;
	private NotificationManager mNotificationManager;
	private int NOTIFICATION_ID = 0x007;
	private int NOTIFICATION_ID2 = 0x008;
	private int NOTIFICATION_ID3 = 0x009;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		init();
	}
	private void init(){
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction(NewBroadcastReceiver.ACTION_NOTIFICATION);
		intentFilter.addAction(NewBroadcastReceiver.ACTION_NOTIFICATION2);
		mBroadcastReceiver = new NewBroadcastReceiver();
		registerReceiver(mBroadcastReceiver, intentFilter);

		mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		findViewById(R.id.btn).setOnClickListener(mOnClickListener);
		findViewById(R.id.btn_direct).setOnClickListener(mOnClickListener);
		findViewById(R.id.btn_custom).setOnClickListener(mOnClickListener);
		//API level 11
		Notification.Builder builder = new Notification.Builder(this);
		builder.setSmallIcon(R.drawable.ic_launcher)//status bar
			.setTicker("猥琐不")//status bar
			.setWhen(System.currentTimeMillis())//the time the event occurred
			.setDefaults(Notification.DEFAULT_SOUND)
			.setContentTitle("石鑫")
			.setContentText("小李飞刀")
			.setContentInfo("美好的回忆")
			.setContentIntent(PendingIntent.getActivity(this,
					0, new Intent(this, NewActivity.class), 0))//startActivity
//			.setContentIntent(PendingIntent.getBroadcast(this, 0,
//				new Intent(NewBroadcastReceiver.ACTION_NOTIFICATION), 0))//sendBroadcastReceiver
//			.setContentIntent(PendingIntent.getService(this, 0,
//				new Intent(this, NewService.class), 0))//startService
			.setAutoCancel(true);//dismiss when touched
		Notification notification = builder.getNotification();//v16用build
		mNotificationManager.notify(NOTIFICATION_ID, notification);
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		unregisterReceiver(mBroadcastReceiver);
	}
	private OnClickListener mOnClickListener = new OnClickListener() {
		@SuppressWarnings("deprecation")
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btn:
				mNotificationManager.cancel(NOTIFICATION_ID);//通过ID删除Notification
				mNotificationManager.cancel(NOTIFICATION_ID2);
				mNotificationManager.cancel(NOTIFICATION_ID3);break;
			case R.id.btn_direct:
				Notification notification = new Notification(R.drawable.ic_launcher,
					"monkey", System.currentTimeMillis());
				//给Notification添加sound
				Uri ringURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
				notification.sound = ringURI;
				//给Notification添加Vibration
				long[] vibrate = new long[]{1000,1000,1000,1000,1000};
				notification.vibrate = vibrate;

				notification.setLatestEventInfo(NotificationActivity.this, "Activity", "launch an activity",
					PendingIntent.getActivity(NotificationActivity.this, 0,
					new Intent(NotificationActivity.this, NewActivity.class), 0));
				mNotificationManager.notify(NOTIFICATION_ID2, notification);break;
			case R.id.btn_custom:
				Notification notification2 = new Notification(R.drawable.ic_launcher,
						"monkey", System.currentTimeMillis());
				RemoteViews remoteView = new RemoteViews(getPackageName(), R.layout.notification);
				notification2.contentView = remoteView;
				notification2.contentIntent = PendingIntent.getActivity(NotificationActivity.this, 0,
					new Intent(NotificationActivity.this, NewActivity.class), 0);
				notification2.contentView.setTextViewText(R.id.txt, "骚包");
				notification2.contentView.setProgressBar(R.id.progressbar, 1000, 400, false);
				//注册及在广播中处理点击事件
				notification2.contentView.setOnClickPendingIntent(R.id.img,
					PendingIntent.getBroadcast(NotificationActivity.this, 0,
					new Intent(NewBroadcastReceiver.ACTION_NOTIFICATION2), 0));
				mNotificationManager.notify(NOTIFICATION_ID3, notification2);
			default:
				break;
			}
		}
	};
}

2)activity_main.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" >
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hit me"
        android:layout_gravity="center"/>
    <Button
        android:id="@+id/btn_direct"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="direct"
        android:layout_gravity="center"/>
    <Button
        android:id="@+id/btn_custom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="custom"
        android:layout_gravity="center"/>
</LinearLayout>

3)NewActivity.java

public class NewActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		Log.i(getClass().getSimpleName(), "onCreate");
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_new);
	}
}

4)activity_new.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="欢迎步入星光大道"/>
</RelativeLayout>

5)NewBroadcastReceiver.java

public class NewBroadcastReceiver extends BroadcastReceiver {
	/**使用4次,定义、注册、发送、接收*/
	public static final String ACTION_NOTIFICATION = "action.NOTIFICATION";
	public static final String ACTION_NOTIFICATION2 = "action.NOTIFICATION2";
	@Override
	public void onReceive(Context context, Intent intent) {
		if(ACTION_NOTIFICATION.equals(intent.getAction())){
			Log.i(getClass().getSimpleName(), "onReceive");
		}else if(ACTION_NOTIFICATION2.equals(intent.getAction())){
			Toast.makeText(context, "轻点好吗", Toast.LENGTH_SHORT).show();
		}
	}
}

6)NewService.java

public class NewService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		//只有Service.onBind(Intent)覆写
		return null;
	}

	@Override
	public void onCreate() {
		Log.i(getClass().getSimpleName(), "onCreate");
		super.onCreate();
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		Log.i(getClass().getSimpleName(), "onStartCommand");
		return super.onStartCommand(intent, flags, startId);
	}
}

7)notification.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_launcher"/>
    <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"/>
    <ProgressBar
        android:id="@+id/progressbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/img"
        android:layout_alignParentBottom="true"
        style="@android:style/Widget.ProgressBar.Horizontal"/>
</RelativeLayout>

8)AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.qinuli.notificationtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.VIBRATE"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.qinuli.notificationtest.NotificationActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".NewActivity"></activity>
        <service android:name=".NewService"/>
    </application>

</manifest>

时间: 2024-12-18 20:11:52

Notification用法的相关文章

通知(二)你可能不知道的Notification用法

这里是通知的其中一种,Notification.常用的和自定义的 <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="mat

Android开发之Notification

Android Notification在每一个Android应用开发中基本都会遇到,它可以按指定的规则向用户推送一些消息,是一项非常实用的功能.本文主要介绍了Android Notification 用法的4种形式,希望可以对各位Android开发者有所帮助. 实现通知一般有以下几个步骤: 1.获取通知服务对象NotificationManager 2.建立Notification对象 3.关联intent 4.执行通知 Notification一般有几种用途:,如下图 1.启动多次通知但只显

Android之Notification的多种用法(转)

我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不多说了,先看效果图: package net.loong

Toast和Notification的用法

Toast的用法 新建工程Toast 资源文件添加Button按钮btnShowToast <Button android:id="@+id/btnShowToast" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="显示一个较短的Toast"/> MainActivity文件中 privat

Notification(通知) 简单用法

Notification(通知) 是应用程序提醒用户某件事情已经发生了的一种方式,可以在“状态栏”和“通知托盘”中看到它.如我们更新程序的时候,可以通过Notification来实现下载进度. Notification 可以有以下动作来增强用户提醒: 1.在状态栏中显示图标. 2.灯光:手机LED呼吸灯闪烁 3.发出声音提醒. 4.手机震动. 5.在通知托盘中显示更多的信息 一,创建Notification Notification需要使用NotificationManager来管理.Notif

Android之 Notification 的多种用法--带你了解通知栏的用法

我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不多说了,先看效果图: 主要的代码如下: package

Android之Notification的多种用法

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

Android关于notification的在不同API下的用法说明

当我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出来,我喜欢把解释写在代码中,在这里我就不多说了,先看效果图: 再看代码,主要的代码如下: <s

Notification的基本用法以及使用RemoteView实现自定义布局

Notification的作用 Notification是一种全局效果的通知,在系统的通知栏中显示.既然作为通知,其基本作用有: 显示接收到短消息.即时信息等 显示客户端的推送(广告.优惠.新闻等) 显示正在进行的事物(后台运行的程序,如音乐播放进度.下载进度) Notification的基本操作: Notification的基本操作主要有创建.更新和取消三种.一个Notification的必要属性有三项,如果不设置的话在运行时会抛出异常: 小图标,通过setSmallIcon方法设置 标题,通