import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import com.douziit.locator.R;
import com.douziit.locator.activity.personalcenter.AlarmPushActivity;
import java.util.Date;
/**
* 兼容 android 8.0 通知
*/
public class NotificationUtils extends ContextWrapper {
private NotificationManager manager;
public static final String id = "channel_MiWa_Id";
public static final String name = "channel_MiWa_Name";
private PendingIntent pendingIntent;
public NotificationUtils(Context context){
super(context);
//点击通知响应事件
pendingIntent = PendingIntent.getActivity(getApplicationContext(), 100, new Intent(getApplicationContext(), AlarmPushActivity.class),
PendingIntent.FLAG_CANCEL_CURRENT);
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void createNotificationChannel(){
NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH);
getManager().createNotificationChannel(channel);
}
private NotificationManager getManager(){
if (manager == null){
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
return manager;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public Notification.Builder getChannelNotification(String title, String content){
return new Notification.Builder(getApplicationContext(), id)
.setTicker("您有新的警报信息,请注意查看")
.setContentTitle(title)
.setContentText(Utils.GetMMddHHmmss(new Date()))
.setSubText(content)
.setSmallIcon(R.mipmap.icon)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icon))
.setAutoCancel(true)
.setWhen(System.currentTimeMillis())
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setContentIntent(pendingIntent);
}
public NotificationCompat.Builder getNotification_25(String title, String content){
return new NotificationCompat.Builder(getApplicationContext())
.setTicker("您有新的警报信息,请注意查看")
.setContentTitle(title)
.setContentText(Utils.GetMMddHHmmss(new Date()))
.setSubText(content)
.setSmallIcon(R.mipmap.icon)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icon))
.setAutoCancel(true)
.setWhen(System.currentTimeMillis())
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setContentIntent(pendingIntent);
}
public void sendNotification(int id, String title, String content){
if (Build.VERSION.SDK_INT>=26){
createNotificationChannel();
Notification notification = getChannelNotification(title, content).build();
getManager().notify(id,notification);
}else{
Notification notification = getNotification_25(title, content).build();
getManager().notify(id,notification);
}
}
}