从零开始学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 void showNormalNotify(){
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 void showZDNotify(){ 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 void showXGNotify(){
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);
是不是很简单。
好了,好好学习天天向上。
学习记录,如果有错请指出,谢谢!
从零开始学android -- notification通知的更多相关文章
- Android Notification通知详细解释
Android Notification通知具体解释 Notification: (一).简单介绍: 显示在手机状态栏的通知. Notification所代表的是一种具有全局效果的通 ...
- Android Notification通知简介
Android Notification通知简介 根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面 ...
- Android Notification通知详解
根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时 ...
- Android Notification通知
/** * 在状态栏显示通知 */ private void showNotification(){ // 创建一个NotificationManager的引用 NotificationManager ...
- 从零开始学android -- Service
废话不多说了,Service是四大组件之一,是一个后台处理长时间运行在主线程不需要依赖ui界面显示的应用组件,切记不能在service中做耗时操作,会阻塞主线程,要做也要在service中开个子线程做 ...
- 从零开始学android开发-项目打包发布
右键项目 选择[android tools]-[export signed application package] 点击[next] 如果没有keystore可以选择[create new keys ...
- 从零开始学android开发-adt-bundle-eclipse下的修改android app名称
eclipse中,打开项目根目录中的AndoirManifest.xml文件,找到如下内容 <application android:allowBackup="true" a ...
- 从零开始学android开发-通过WebService进行网络编程,使用工具类轻松实现
相信大家在平常的开发中,对网络的操作用到HTTP协议比较多,通过我们使用Get或者Post的方法调用一个数据接口,然后服务器给我们返回JSON格式的数据,我们解析JSON数据然后展现给用户,相信很多人 ...
- 从零开始学android开发-通过WebService获取今日天气情况
因为本身是在搞.NET方面的东东,现在在学习Android,所以想实现Android通过WebService接口来获取数据,网上很多例子还有有问题的.参考:Android 通过WebService进行 ...
随机推荐
- c#ppt练习
第六章 1.从控制台输入一个数,如果这个数大于等于60,就输出”及格”,否则输出”不及格” 从控制台输入一串字符,如果这个这串字符的长度大于3,并且字符首字母为A,,则输出“格式正确”,如果这串字符的 ...
- 分享最新申请IDP账号的过程,包含duns申请的分享(2013年6月)
5月份接到公司要申请开发者账号的任务,就一直在各个论坛找申请的流程,但都是一些09年10年的比较旧的流程,现在都已经不适用了,好不容易找到2012年分享的流程吧,才发现申请过程中少了DUNS编码的步骤 ...
- WinForm-SQL查询避免UI卡死
使用委托,呵呵. Func<List<VM>> act = () => { SqlDataReader reader = DBHelper.ExecuteReader(s ...
- linux文件传输
Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp常用来在两台linux之间传输文件 Secure Ftp 是一个基 ...
- 4. Median of Two Sorted Arrays(topK-logk)
4. Median of Two Sorted Arrays 题目 There are two sorted arrays nums1 and nums2 of size m and n respec ...
- 【Hadoop】Hadoop MR Job工作流引擎
Apache Oozie 是用于 Hadoop 平台的一种工作流调度引擎.该框架(如图 1 所示)使用 Oozie 协调器促进了相互依赖的重复工作之间的协调,您可以使用预定的时间或数据可用性来触发 A ...
- PHP empty()函数说明---用了N遍了就是记不住
从表面上看,很容易误解empty()函数是判断字符串是否为空的函数,其实并不是,我也因此吃了很多亏. empty()函数是用来测试变量是否已经配置.若变量已存在.非空字符串或者非零,则返回 false ...
- Java三大器之拦截器(Interceptor)的实现原理及代码示例
1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 ...
- 向git库提交代码出现”There are no staged files"怎么办?
1.选择菜单“Window”->"Preference" 2.左边树菜单选择“Team”->"Git"->"Committing&q ...
- JAVA经常使用集合框架使用方法具体解释基础篇二之Colletion子接口List
接着上一篇,接着讲讲集合的知识.上一篇讲了Collection接口.它能够说是集合的祖先了,我们这一篇就说说它的子孙们. 一.Collection的子接口 List:有序(存入和取出的顺序一致).元素 ...