功能概述:包含2.3以及4.0以上版本,实现通知的下发,点击通知能自动调用系统自带的电话呼叫功能

1.配置AndroidManifest.xml清单文件,开启对应的权限


<!-- 开启呼叫权限 -->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <!-- 开启手机振动权限 -->
    <uses-permission android:name="android.permission.VIBRATE"/>

2.activity_main.xml文件中



<!-- 发送通知2.3版本 -->
    <Button
        android:id="@+id/btnNotification"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="22dp"
        android:onClick="send2_3"
        android:text="发送通知(2.3版本)" />

    <!-- 发送通知4.0以上版本 -->
    <Button
        android:id="@+id/btnNotification1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnNotification"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="41dp"
        android:onClick="send"
        android:text="发送通知(4.0以上版本)" />

3.MainActivity.java文件中



package com.t20.notification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.View;

public class MainActivity extends Activity {

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

	}

	/**
	 * 发送通知2.3版本
	 * 
	 * @param v
	 */
	public void send2_3(View v) {
		// 获取通知的系统服务
		NotificationManager manage = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

		// 定义通知的对象
		// 第一个参数:图标(自定义)
		// 第二个参数:提示文字(缩略文字,收到通知但是没有点击查看的时候显示提示文字)
		// 第三个参数:设置通知提示的时间(可以设置延迟显示)
		Notification notification = new Notification(R.drawable.ic_launcher,
				"收到一条通知", System.currentTimeMillis());

		// 隐式意图,达到点击通知后自动拨打10086的效果
		Intent intent = new Intent();
		intent.setAction(intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:10086"));

		// 创建意图
		// 第一个参数:上下文
		// 第二个参数:请求码
		// 第三个参数:显示的次数
		PendingIntent contentIntent = PendingIntent.getActivity(
				MainActivity.this, 100, intent, PendingIntent.FLAG_ONE_SHOT);

		// 设置通知的内容
		// 第一个参数:上下文
		// 第二个参数:标题
		// 第三个参数:内容
		// 第四个参数:意图
		notification.setLatestEventInfo(MainActivity.this, "我是标题", "我是内容",
				contentIntent);

		// 第一个参数:该通知的id(必须唯一)
		// 第二个参数:通知的对象
		manage.notify(1, notification);
	}

	/**
	 * 发送通知4.0以上版本
	 * 
	 * @param v
	 */
	public void send(View v) {
		// 获得通知的系统服务
		NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

		// 隐式意图,达到点击通知后自动拨打10086的效果
		Intent intent = new Intent();
		intent.setAction(intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:10086"));

		// 创建意图
		// 第一个参数:上下文
		// 第二个参数:请求码
		// 第三个参数:显示的次数
		PendingIntent contentIntent = PendingIntent.getActivity(
				MainActivity.this, 100, intent, PendingIntent.FLAG_ONE_SHOT);

		// 定义通知对象并设置一系列参数
		//setLights()用于设置LED灯闪烁,提示用户去查看,参数一:LED灯的颜色;参数二:LED灯亮起的时长;参数三:LED灯暗去的时长
		//setVibrate()用于设置通知到来的时候让手机振动,下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长,以此类推
		Notification notification = new NotificationCompat.Builder(this)
				.setContentTitle("我是通知的标题")
				.setContentText("我是通知的内容")
				.setWhen(System.currentTimeMillis())
				.setSmallIcon(R.drawable.ic_launcher)
				.setLargeIcon(
						BitmapFactory.decodeResource(getResources(),
								R.drawable.ic_launcher))
				.setContentIntent(contentIntent).setLights(Color.GREEN, 1000, 1000).setVibrate(new long[]{0,1000,1000,1000}).build();

		manager.notify(2, notification);
	}
}