这里先引入一篇博客,讲解华为手机怎么取消进度条情况下一直提示有声音https://blog.csdn.net/fzkf9225/article/details/81119780
https://www.jianshu.com/p/8cec293cfa9a安卓8.0通知适配
接下来引入一个通知工具类:
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.ContextWrapper;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
public class NotificationUtil extends ContextWrapper {
private NotificationManager mManager;
public static final String sID = "channel_1";
public static final String sName = "channel_name_1";
public NotificationUtil(Context context) {
super(context);
}
public void sendNotification(String title, String content,int total,int progress) {
if (Build.VERSION.SDK_INT >= 26) {
createNotificationChannel();
Notification notification = getNotification_26(title, content,total,progress).build();
getmManager().notify(1, notification);
} else {
Notification notification = getNotification_25(title, content,total,progress).build();
getmManager().notify(1, notification);
}
}
private NotificationManager getmManager() {
if (mManager == null) {
mManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
return mManager;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void createNotificationChannel() {
NotificationChannel channel = new NotificationChannel(sID, sName, NotificationManager.IMPORTANCE_HIGH);
getmManager().createNotificationChannel(channel);
}
public NotificationCompat.Builder getNotification_25(String title, String content,int total,int progress) {
// 以下是展示大图的通知
android.support.v4.app.NotificationCompat.BigPictureStyle style = new android.support.v4.app.NotificationCompat.BigPictureStyle();
style.setBigContentTitle("BigContentTitle");
style.setSummaryText("SummaryText");
style.bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_background));
// 以下是展示多文本通知
android.support.v4.app.NotificationCompat.BigTextStyle style1 = new android.support.v4.app.NotificationCompat.BigTextStyle();
style1.setBigContentTitle(title);
style1.bigText(content);
return new NotificationCompat.Builder(getApplicationContext())
.setContentTitle(title)
.setContentText(progress*100/total+"%")
.setSmallIcon(R.mipmap.download)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round))
.setStyle(style)
.setProgress(total,progress,false)
.setAutoCancel(true);
}
@RequiresApi(api = Build.VERSION_CODES.O)
public Notification.Builder getNotification_26(String title, String content,int total,int progress) {
return new Notification.Builder(getApplicationContext(), sID)
.setContentTitle(title)
.setContentText(progress+"%")
.setSmallIcon(R.mipmap.download)
.setProgress(total,progress,false)
.setAutoCancel(true);
}
@RequiresApi(api = Build.VERSION_CODES.O)
public Notification.Builder getNotification_26(String title, String content) {
return new Notification.Builder(getApplicationContext(), sID)
.setContentTitle(title)
.setContentText(content)
.setSmallIcon(R.mipmap.download)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round))
.setStyle(new Notification.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_background)))
.setNumber(1)
.setAutoCancel(true);
}
}