功能概述:包含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);
}
}