android 通知写法_从零开始学android -- notification通知

目前有三种通知

第一种是普通通知

看看效果

布局什么的太简单了我就不放在上面了给你们看核心的代码就行了 里面的   int notificationID = 1;

//设置点击通知后的意图

Intent intent = new Intent(this,NotificationView.class);

intent.putExtra("notificationID",notificationID);//塞入pendingIntent 参数解释:1.上下文也就是context 2.请求码(用于意图的请求码) 3.意图(用来启动目标活动的意图) 4.标志(活动启动时使用的标志)

PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);//获取系统的notification管理服务

NotificationManager manager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);//现在官方推荐用builder的方式构建Notification,原来是new的方式已经淘汰了。

Notification.Builder builder = new Notification.Builder(this);//收到通知时最顶部显示的信息

builder.setSmallIcon(R.mipmap.ic_launcher);

builder.setTicker("Reminder:Meeting starts in 5 minutes");

builder.setWhen(System.currentTimeMillis());//下拉顶部看到的详细通知信息 图标通用的

builder.setContentTitle("System Alarm"); //设置标题

builder.setContentText("Meeting with customer at 3pm.."); //设置内容//设置通知被点击后的意图处理也就是打开某个activity//至于为什么要用pendingIntent ,因为PendingIntent对象可以代表应用程序帮助您在后面的某个时候执行一个动作,而“不用考虑应用程序是否正在运行”

builder.setContentIntent(pendingIntent);

builder.setDefaults(Notification.DEFAULT_SOUND);//设置默认的声音和震动//当然你也可以自定义设置震动//builder.setVibrate(new long[]{100,250,100,500});//设置震动

builder.setAutoCancel(true);//设置点击后自动消失也就是取消显示 true:点击后消失;false:点击后不消失;默认是false

Notification notif = builder.build(); //构建 这里注意build方法最低支持minSdkVersion 16

manager.notify(notificationID,notif); //notification管理服务发送你所构建的通知 此时你会收到通知

注意里面的builder.setAutoCancel(true); 如果你不想程序自动帮你点击后关闭,而是自己用代码在另一个位置自己去关闭,那么你可以不写这句代码,也可以设置成false,然后关闭代码可以这么写

//获取服务

NotificationManager nm =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);

nm.cancel(getIntent().getIntExtra("notificationID",1)); //关闭显示notificationID为1的通知

切记关闭id与你通知一致的id。

也可以写个方法

/*** 显示普通的通知*/

private voidshowNormalNotify(){

Notification.Builder builder= new Notification.Builder(this);

builder.setAutoCancel(true); //设置点击玩自动关闭

builder.setSmallIcon(R.drawable.ic_launcher_background);

builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_foreground));

builder.setContentTitle("普通通知");

builder.setContentText("普通通知的我的鬼内容");

Intent intent= new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.baidu.com"));

PendingIntent pendingIntent= PendingIntent.getActivity(this,0,intent,0);

builder.setContentIntent(pendingIntent);

NotificationManager notifiyManager= (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

notifiyManager.notify(1,builder.build());

}

第二种是折叠式的通知

看看效果

写法也是类似只是需要用到红色标注的代码

/*** 显示折叠式的通知*/@RequiresApi(api=Build.VERSION_CODES.JELLY_BEAN)private voidshowZDNotify(){

Notification.Builder builder= new Notification.Builder(this);

builder.setAutoCancel(true);

builder.setSmallIcon(R.drawable.ic_launcher_background);

builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_foreground));

builder.setContentTitle("折叠式通知");

builder.setContentText("这是折叠式通知");

Intent intent= new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.baidu.com"));

PendingIntent pendingIntent= PendingIntent.getActivity(this,0,intent,0);

builder.setContentIntent(pendingIntent);

RemoteViews remoteViews= new RemoteViews(getPackageName(),R.layout.view_fold);

Notification notification = builder.build();

notification.bigContentView =remoteViews;

NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);;

notificationManager.notify(1,notification);

}

第三种是悬挂式通知

看看效果

来看看使用方法

写法也是类似只是需要用到红色标注的代码

/*** 显示悬挂式的通知*/

private voidshowXGNotify(){

Notification.Builder builder= new Notification.Builder(this);

builder.setAutoCancel(true);

builder.setSmallIcon(R.drawable.ic_launcher_background);

builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.folder));

builder.setContentTitle("悬挂式通知");

builder.setContentText("这是折叠式通知");

Intent intent= new Intent();

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setClass(this,TestActivity.class);

PendingIntent hangPendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);

builder.setFullScreenIntent(hangPendingIntent,true); NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

notificationManager.notify(1,builder.build());

}

Android 5.0后加入了一种新的模式Notification显示等级,共有以下3种

1.VISIBILITY_PUBLIC:任何情况都会显示通知

2.VISIBILITY_PRIVATE:只有在没有锁屏时会显示通知。

3.VISIBILITY_SECRET:在pin、password等安全锁和没有锁屏的情况下才能显示通知

设置非常简单,只要调用setVisibility方法就行了

builder.setVisibility(Notification.VISIBILITY_PUBLIC);

是不是很简单。

好了,好好学习天天向上。

学习记录,如果有错请指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值