提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、原因
Android 8.0 及更高版本上提供通知,必须创建NotificationChannel 的实例,以便在系统中注册应用的通知渠道。
二、解决方法
public void setNotification(String Title,String ContentText){
//获取通知管理器,用于发送通知
//final NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
String CHANNEL_ID="your channel id";
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID
, "name", NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(mContext, CHANNEL_ID);
//Notification.Builder nBuilder = new Notification.Builder(mContext); // 创建一个Notification对象
// 设置打开该通知,该通知自动消失
nBuilder.setAutoCancel(true);//true
// 设置通知的图标
nBuilder.setSmallIcon(R.drawable.packet);
// 设置通知内容的标题
nBuilder.setContentTitle("设备报警提醒!!!");
// 设置通知内容
nBuilder.setContentText("你有设备触发警报,请打开APP查看详情!");
//设置使用系统默认的声音、默认震动
nBuilder.setDefaults(Notification.DEFAULT_SOUND
| Notification.DEFAULT_VIBRATE);
//设置发送时间
nBuilder.setWhen(System.currentTimeMillis());
创建一个启动其他Activity的Intent
// Intent intent = new Intent(MainActivity.this
// , DetailActivity.class);
// PendingIntent pi = PendingIntent.getActivity(
// MainActivity.this, 0, intent, 0);
设置通知栏点击跳转
// nBuilder.setContentIntent(pi);
Notification notification1=nBuilder.build();
//发送通知
notificationManager.notify(NOTIFYID, notification1);
Toast.makeText(mContext,"fasfas",Toast.LENGTH_SHORT).show();
}