自己笔记用,可以直接拿来调用
在相关的界面根据不同的情况设置好不同的信息message,做好判断的情况下,最后调用方法
NotificationHelper.setNotification(mContext, message);
一个可直接拿来用的消息提醒类,主要是不同情况提醒的音乐不同,闪灯和震动都是用的默认
public class NotificationHelper {
public static void setNotification(Context mContext,String str)
{
NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService(mContext.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext);
Intent intent=MainActivity_.intent(mContext).get();
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
mBuilder.setContentTitle("xxxxxxxx")//设置通知栏标题
.setContentText(str) //设置通知栏显示内容
.setContentIntent(pendingIntent) //设置通知栏点击意图
// .setNumber(number) //设置通知集合的数量
.setTicker("xxxxxxxx") //通知首次出现在通知栏,带上升动画效果的
.setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间
.setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
// .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
.setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
// .setVibrate(new long[] {0,500})//设置震动方式,延迟0ms,然后振动500ms
// .setLights(0xff0000ff, 300, 0)//设置闪光灯
// .setSound(Uri.parse("android.resource://" + mContext.getPackageName() + "/" +R.raw.world))
//Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
.setSmallIcon(R.drawable.xueyang);//设置通知小ICON
Notification notification = mBuilder.build();
notification.flags = Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_VIBRATE;
// notification.defaults |= Notification.DEFAULT_SOUND;
//不同状态下提醒声音不同
if(str.contains("AA")&&!str.contains("BB")){//只是AA有问题
notification.sound = Uri.parse("android.resource://" + mContext.getPackageName() + "/" +R.raw.world);
}else if(str.contains("AA")&&!str.contains("BB")){//只是BB有问题
notification.sound = Uri.parse("android.resource://" + mContext.getPackageName() + "/" +R.raw.beep);
}else if(str.contains("AA")&&str.contains("BB")){//都有问题
notification.sound = Uri.parse("android.resource://" + mContext.getPackageName() + "/" +R.raw.seville);
}
mNotificationManager.notify(1, notification);
}
}
Notifaction的一些属性:
public static final int FLAG_SHOW_LIGHTS = 0x00000001;//控制闪光
public static final int FLAG_ONGOING_EVENT = 0x00000002;//将flag设置为这个属性那么通知就会像QQ一样一直在状态栏显示
public static final int FLAG_INSISTENT = 0x00000004; //重复发出声音,直到用户响应此通知public static final int FLAG_ONLY_ALERT_ONCE = 0x00000008;//标记声音或者震动一次
public static final int FLAG_AUTO_CANCEL = 0x00000010; //在通知栏上点击此通知后自动清除此通知
public static final int FLAG_NO_CLEAR = 0x00000020;//将flag设置为这个属性那么通知栏的那个清楚按钮就不会出现
public static final int FLAG_FOREGROUND_SERVICE = 0x00000040;//前台服务标记
public static final int FLAG_HIGH_PRIORITY = 0x00000080;
如何在一个当前界面关闭Notifaction提醒
NotificationManager manger = (NotificationManager)mContext.getSystemService(NOTIFICATION_SERVICE);
manger.cancel(1);//这里的int值是在上面mNotificationManager.notify(1, notification);设定的int值