Android基础_通知(Notification)

通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。通知可以在活动、广播、服务中创建。


一、通知创建的过程


1.我们需要NotificationManager来对通知进行管理,一般用getSystemService()方法来获取其对象。

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);


2.然后就是创建Notification的对象。

Notification notification = new Notification(R.drawable.icon, "This is ticker text",System.currentTimeMillis());

参数一:通知栏的图标

参数二:指定通知的提示内容

参数三:设置通知被创建的时间


3.设置通知的布局

标准布局setLatestEventInfo();

notification.setLatestEventInfo(context, "This is content title", "This is content text", null);

参数一:context

参数二:通知的标题

参数三:通知的具体内容

参数四:点击通知的响应,为null表示无响应

以后会学到自定义布局


4.显示通知

manager.notify(1,notification);

参数一:通知的id,方便NotificationManager对通知进行管理

参数二:创建的通知


二、设置通知点击后的响应(PendingIntent)

Intent intent = new Intent(this, NotificationActivity.class);

PendingIntent pi = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

notification.setLatestEventInfo(this, "This is content title", "This is content text", pi);


三、一个简单的例子

MainActivity.java

package com.myNotification;

import java.io.File;
import com.example.mytest_notification.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{
	
	Button open, close;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_layout);
		initObjects();
	}
	
	private void initObjects(){
		open = (Button) findViewById(R.id.xml_open);
		close = (Button) findViewById(R.id.xml_close);
		open.setOnClickListener(this);
		close.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch(v.getId()){
			case R.id.xml_open:
				openNotification();
				break;
			case R.id.xml_close:
				closeNotification();
				break;
			default:
				break;
		}
	}
	
	@SuppressLint("SdCardPath") @SuppressWarnings("deprecation")
	private void openNotification(){
		NotificationManager manage = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		Notification notification = new Notification(R.drawable.ic_launcher, "戚东亮看看", System.currentTimeMillis());
		Intent intent = new Intent(this, NotificationActivity.class);
		PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
		notification.setLatestEventInfo(this, "标题", "具体内容", pi);
		Uri soundUri = Uri.fromFile(new File("/sdcard/Music/You Are Beautiful.mp3"));
		notification.sound = soundUri;
		long[] vibrates = {0, 500, 500, 500};
		notification.vibrate = vibrates;
		manage.notify(1, notification);
	}
	
	private void closeNotification(){
		NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manager.cancelAll();
	}

}



NotificationActivity.java


package com.myNotification;

import com.example.mytest_notification.R;

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

public class NotificationActivity extends Activity{
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.notification_layout);
		NotificationManager manage = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manage.cancel(1);
	}

}




你可能感兴趣的:(03_Android基础,android,通知,Notification)