这篇文章主要讲解了Android 8.0实现发送通知的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
在Android8.0以后,针对Notification 通知api做了修改,新增了通知渠道(NotificationCannel)。下面就把demo的详细代码记录下:
1.Application 为NotificationManager添加通知频道
import android.app.Application;
import com.xinrui.ndkapp.notification.NotificationChannels;
public class NdkApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
NotificationChannels.createAllNotificationChannels(this);
}
}
2.NotificationChannels 类
public class NotificationChannels {
public final static String CRITICAL = "critical";
public final static String IMPORTANCE = "importance";
public final static String DEFAULT = "default";
public final static String LOW = "low";
public final static String MEDIA = "media";
public static void createAllNotificationChannels(Context context) {
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if(nm == null) {
return;
}
NotificationChannel mediaChannel = new NotificationChannel(
MEDIA,
context.getString(R.string.app_name),
NotificationManager.IMPORTANCE_DEFAULT);
mediaChannel.setSound(null,null);
mediaChannel.setVibrationPattern(null);
nm.createNotificationChannels(Arrays.asList(
new NotificationChannel(
CRITICAL,
context.getString(R.string.app_name),
NotificationManager.IMPORTANCE_HIGH),
new NotificationChannel(
IMPORTANCE,
context.getString(R.string.app_name),
NotificationManager.IMPORTANCE_DEFAULT),
new NotificationChannel(
DEFAULT,
context.getString(R.string.app_name),
NotificationManager.IMPORTANCE_LOW),
new NotificationChannel(
LOW,
context.getString(R.string.app_name),
NotificationManager.IMPORTANCE_MIN),
//custom notification channel
mediaChannel
));
}
}
3.发送通知
public void sendSimpleNotification(Context context, NotificationManager nm) {
//创建点击通知时发送的广播
Intent intent = new Intent(context, NotificationMonitorService.class);
intent.setAction("android.service.notification.NotificationListenerService");
PendingIntent pi = PendingIntent.getService(context,0,intent,0);
//创建删除通知时发送的广播
Intent deleteIntent = new Intent(context,NotificationMonitorService.class);
deleteIntent.setAction(Intent.ACTION_DELETE);
PendingIntent deletePendingIntent = PendingIntent.getService(context,0,deleteIntent,0);
//创建通知
Notification.Builder nb = new Notification.Builder(context, NotificationChannels.DEFAULT)
//设置通知左侧的小图标
.setSmallIcon(R.drawable.ic_notification)
//设置通知标题
.setContentTitle("Simple notification")
//设置通知内容
.setContentText("Demo for simple notification!")
//设置点击通知后自动删除通知
.setAutoCancel(true)
//设置显示通知时间
.setShowWhen(true)
//设置通知右侧的大图标
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_notifiation_big))
//设置点击通知时的响应事件
.setContentIntent(pi)
//设置删除通知时的响应事件
.setDeleteIntent(deletePendingIntent);
//发送通知
nm.notify(Notificaitons.NOTIFICATION_SAMPLE,nb.build());
}
看完上述内容,是不是对Android 8.0实现发送通知的方法有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。