public class NotificationUtil {
private Context aContext;
private NotificationManager notificationManager;
private static class NotificationHolder {
private static final NotificationUtil INSTANCE = new NotificationUtil();
}
private NotificationUtil() {
}
public static final NotificationUtil getInstance() {
return NotificationHolder.INSTANCE;
}
/**
* 初始化变量和适配8.0工作
*
* @param context
*/
@RequiresApi(api = 26)
public void init(Context context) {
aContext = context;
notificationManager = (NotificationManager) aContext.getSystemService(
NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
String channelId = "chat";
String channelName = "聊天消息";
int importance = NotificationManager.IMPORTANCE_HIGH;
createNotificationChannel(channelId, channelName, importance);
}
}
/**
* 为8.0 设置通知渠道
*
* @param channelId
* @param channelName
* @param importance
*/
@RequiresApi(api = 26)
private void createNotificationChannel(String channelId, String channelName, int importance) {
NotificationChannel notificationchannel = new NotificationChannel(channelId, channelName, importance);
notificationManager.createNotificationChannel(notificationchannel);
}
/**
* 发送通知消息
*
* @param title
* @param content
*/
public void sendNotification(String title, String content, Context context, Activity activity) {
Intent intent = new Intent(context, activity.getClass());
PendingIntent intentPend = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Notification notification = new NotificationCompat.Builder(aContext, "chat")
.setContentTitle(title)
.setContentText(content)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(aContext.getResources(), R.mipmap.ic_launcher))
.setAutoCancel(true)
.setContentIntent(intentPend)
.build();
notificationManager.notify(1, notification);
}
/**
* 发送通知消息
* bundle
* @param bundle
* @param context
*/
public void sendNotificationBundle(Bundle bundle, Context context, Class activity) {
Intent intent = new Intent(context, activity);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent intentPend = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
String title = bundle.getString(JPushInterface.EXTRA_TITLE);
String content = bundle.getString(JPushInterface.EXTRA_MESSAGE);
Notification notification = new NotificationCompat.Builder(aContext, "chat")
.setContentTitle(title)
.setContentText(content)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(aContext.getResources(), R.mipmap.ic_launcher))
.setAutoCancel(true)
.setContentIntent(intentPend)
.build();
notificationManager.notify(1, notification);
}
}
使用方式:NotificationUtil.init(context).sendNotificationBundle();
或者NotificationUtil.init(context).sendNotification();
Activity参数对应的是点击后要跳转的Activity