Newer
Older
dxcgt / app / src / main / java / com / smartdot / cgt / util / NotificationCreater.java
wangxitong on 6 Apr 2021 7 KB first commit
package com.smartdot.cgt.util;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;

import com.smartdot.cgt.R;
import com.smartdot.cgt.activity.BaseActivity;
import com.smartdot.cgt.activity.FrmNotificationCloser;

import java.util.ArrayList;
import java.util.List;

public class NotificationCreater
{

	private static List<Integer> nowNotificationList = new ArrayList<Integer>();

	/**
	 * 创建并发出以一个广播
	 *
	 * @param context      上下文
	 * @param intent
	 * @param iconId       广播ID
	 * @param tickerText   设置显示提示信息,该信息也会在状态栏显示
	 * @param contentTitle 内容标题
	 * @param contentText  内容正文
	 */
	public static void createNotification(Context context, Intent intent,
										  int iconId, CharSequence tickerText,
										  CharSequence contentTitle,
										  CharSequence contentText)
	{
		intent.putExtra(BaseActivity.KEY_NOTIFICATIONIDTOCLOSE, iconId);

//		NotificationManager notificationManager = (NotificationManager) context
//			.getSystemService(Activity.NOTIFICATION_SERVICE);
//		Notification notification = new Notification(iconId, tickerText,
//			System.currentTimeMillis());
//		PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
//			intent, PendingIntent.FLAG_UPDATE_CURRENT);
//		notification.setLatestEventInfo(context, contentTitle, contentText,
//			contentIntent);
//		notification.defaults = Notification.DEFAULT_ALL;
//		notificationManager.notify(iconId, notification);
		if (!nowNotificationList.contains(iconId))
		{
			nowNotificationList.add(iconId);
		}

		//获取NotificationManager实例
		NotificationManager mNotifyManager =
			(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		//获取PendingIntent
		PendingIntent mainPendingIntent = PendingIntent.getActivity(context, 0,
			intent, PendingIntent.FLAG_UPDATE_CURRENT);

		//创建 Notification.Builder 对象
		NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
			.setSmallIcon(R.drawable.exe_icon)
			//点击通知后自动清除
			.setAutoCancel(true)
			.setContentTitle(contentTitle)
			.setContentText(contentText)
			.setDefaults(Notification.DEFAULT_ALL)
			.setContentIntent(mainPendingIntent);
		//发送通知
		mNotifyManager.notify(iconId, builder.build());
	}

	/**
	 * 创建并发出以一个广播,只用闪光提示
	 *
	 * @param context      上下文
	 * @param intent
	 * @param iconId       广播ID
	 * @param tickerText   设置显示提示信息,该信息也会在状态栏显示
	 * @param contentTitle 内容标题
	 * @param contentText  内容正文
	 */
	public static void createNotificationOnlyLights(Context context,
													Intent intent, int iconId,
													CharSequence tickerText,
													CharSequence contentTitle,
													CharSequence contentText)
	{

//		NotificationManager notificationManager = (NotificationManager) context
//				.getSystemService(Activity.NOTIFICATION_SERVICE);
//		Notification notification = new Notification(iconId, tickerText,
//				System.currentTimeMillis());
//		PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
//				intent, PendingIntent.FLAG_UPDATE_CURRENT);
//		notification.setLatestEventInfo(context, contentTitle, contentText,
//				contentIntent);
//		notification.defaults = Notification.DEFAULT_LIGHTS;
//		notificationManager.notify(iconId, notification);
		if (!nowNotificationList.contains(iconId))
		{
			nowNotificationList.add(iconId);
		}

		//获取NotificationManager实例
		NotificationManager mNotifyManager =
			(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		//获取PendingIntent
		PendingIntent mainPendingIntent = PendingIntent.getActivity(context, 0,
			intent, PendingIntent.FLAG_UPDATE_CURRENT);

		//创建 Notification.Builder 对象
		NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
			.setSmallIcon(R.drawable.exe_icon)
			//点击通知后自动清除
			.setAutoCancel(true)
			.setContentTitle(contentTitle)
			.setContentText(contentText)
			.setDefaults(Notification.DEFAULT_LIGHTS)
			.setContentIntent(mainPendingIntent);
		//发送通知
		mNotifyManager.notify(iconId, builder.build());
	}

	public static void createNotification(Context context, int iconId,
										  CharSequence tickerText, CharSequence contentTitle,
										  CharSequence contentText)
	{
		createNotification(context, iconId, tickerText, contentTitle,
			contentText, true);
	}

	/**
	 * 创建一个广播
	 *
	 * @param context         上下文
	 * @param iconId          广播ID
	 * @param tickerText      设置显示提示信息,该信息也会在状态栏显示
	 * @param contentTitle    内容标题
	 * @param contentText     内容正文
	 * @param canCloseByClick 是否能通过点击取消
	 */
	public static void createNotification(Context context, int iconId,
										  CharSequence tickerText, CharSequence contentTitle,
										  CharSequence contentText, boolean canCloseByClick)
	{
//		Intent intent = null;
//		if (canCloseByClick)
//		{
//			intent = new Intent(context, FrmNotificationCloser.class);
//			intent.putExtra(BaseActivity.KEY_NOTIFICATIONIDTOCLOSE, iconId);
//		}
//		NotificationManager notificationManager = (NotificationManager) context
//				.getSystemService(Activity.NOTIFICATION_SERVICE);
//		Notification notification = new Notification(iconId, tickerText,
//				System.currentTimeMillis());
//		PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
//				intent, PendingIntent.FLAG_UPDATE_CURRENT);
//		notification.setLatestEventInfo(context, contentTitle, contentText,
//				contentIntent);
//		notification.defaults = Notification.DEFAULT_ALL;
//		notificationManager.notify(iconId, notification);
		if (!nowNotificationList.contains(iconId))
		{
			nowNotificationList.add(iconId);
		}

		//获取NotificationManager实例
		NotificationManager mNotifyManager =
			(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		//获取PendingIntent
		Intent intent = null;
		if (canCloseByClick)
		{
			intent = new Intent(context, FrmNotificationCloser.class);
			intent.putExtra(BaseActivity.KEY_NOTIFICATIONIDTOCLOSE, iconId);
		}
		PendingIntent mainPendingIntent = PendingIntent.getActivity(context, 0,
			intent, PendingIntent.FLAG_UPDATE_CURRENT);

		//创建 Notification.Builder 对象
		NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
			.setSmallIcon(R.drawable.exe_icon)
			//点击通知后自动清除
			.setAutoCancel(true)
			.setContentTitle(contentTitle)
			.setContentText(contentText)
			.setDefaults(Notification.DEFAULT_ALL)
			.setContentIntent(mainPendingIntent);
		//发送通知
		mNotifyManager.notify(iconId, builder.build());
	}

	/**
	 * 删除一个广播
	 *
	 * @param context 上下文
	 * @param iconId  广播ID
	 */
	public static void closeNotification(Context context, int iconId)
	{
//		NotificationManager notificationManager = (NotificationManager) context
//				.getSystemService(Activity.NOTIFICATION_SERVICE);
//		notificationManager.cancel(iconId);
		if (nowNotificationList.contains(iconId))
		{
			nowNotificationList.remove(new Integer(iconId));
		}
		//获取NotificationManager实例
		NotificationManager mNotifyManager =
			(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
		mNotifyManager.cancel(iconId);
	}

	/**
	 * 判断广播是否存在
	 *
	 * @param iconId 广播ID
	 * @return
	 */
	public static boolean isNotificationAvailable(int iconId)
	{
		return nowNotificationList.contains(iconId);
	}
}