Android 通知栏的使用
2016-01-22 20:33
369 查看
在看《第一行代码》的时候,学到通知栏这一块内容,发现书上的内容已经过时了,使用的方法已经被android摒弃了。于是上网找资料,再结合书上部分还没过时的内容,学习了一下android通知栏的内容。
使用步骤
第一步:创建一个NotificationManager来对所有的通知进行管理
第二步:创建一个通知栏的Builder构造类
第三步:通过对builder对象对通知栏进行设置
第四步:显示通知
详细使用步骤
效果如下图所示
通知栏出现之后就可以进一步学习对于通知栏的点击事件的使用了,因为发现这时候点击通知栏的通知没有任何的效果,平时我们遇到的通知栏点击之后就会转到相应的应用。对通知栏的点击事件的设置可以在第三步的过程中,使用setContentIntent(pendingIntent)函数,通过传递一个PendingIntent类型的参数来设置。
PendingIntent和Intent差不多,都是表明一个“意图”,可以通过使用intent对象来构造PendingIntent对象,所以上面的代码变成
最后是对通知栏的通知图标的取消,因为发现在点击通知之后,页面虽然跳转了,但是通知图标依然存在。可以在跳转到新的页面之后调用NotificationManager对象的cancel函数,传入一个通知栏id的参数,对相应的id对应的通知取消掉。通知栏的id就是在第四步
中第一个参数指定的id号。
点击通知栏之后,跳转到了NewsMainActivity活动页面,所在NewsMainActivity的onCreate函数中对通知进行取消
使用步骤
第一步:创建一个NotificationManager来对所有的通知进行管理
第二步:创建一个通知栏的Builder构造类
第三步:通过对builder对象对通知栏进行设置
第四步:显示通知
详细使用步骤
<span style="white-space:pre"> </span>//第一步创建一个NotificationManager来对所有的通知进行管理 NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); //第二步创建一个通知栏Builder构造类 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this); //第三步通过builder对象对通知栏进行设置 mBuilder.setContentTitle("通知标题")//设置通知栏的标题 .setContentText("通知内容")//设置通知栏的内容 .setTicker("通知来了")//设置下拉栏没有下拉时显示的提示,就是会向上滚动显示的内容 .setWhen(System.currentTimeMillis())//设置通知栏的显示时间 .setPriority(Notification.PRIORITY_DEFAULT)//设置通知栏的优先级,设置为默认的 .setDefaults(Notification.DEFAULT_VIBRATE)//设置通知为默认的震动、声音、闪灯模式 .setSmallIcon(R.drawable.back);//设置提示的内容的图标 //显示通知 第一个参数是通知的id号 manager.notify(1,mBuilder.build());
效果如下图所示
通知栏出现之后就可以进一步学习对于通知栏的点击事件的使用了,因为发现这时候点击通知栏的通知没有任何的效果,平时我们遇到的通知栏点击之后就会转到相应的应用。对通知栏的点击事件的设置可以在第三步的过程中,使用setContentIntent(pendingIntent)函数,通过传递一个PendingIntent类型的参数来设置。
PendingIntent和Intent差不多,都是表明一个“意图”,可以通过使用intent对象来构造PendingIntent对象,所以上面的代码变成
<span style="white-space:pre"> </span>NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this); Intent intent = new Intent(MainActivity.this,NewsMainActivity.class); //构造了一个表示从当前活动转向NewsMainActivity的一个PendingIntent PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,0); mBuilder.setContentTitle("通知标题") .setContentText("通知内容") .setContentIntent(pendingIntent) .setTicker("通知来了") .setWhen(System.currentTimeMillis()) .setPriority(Notification.PRIORITY_DEFAULT) .setDefaults(Notification.DEFAULT_VIBRATE) .setSmallIcon(R.drawable.back); manager.notify(1,mBuilder.build());
最后是对通知栏的通知图标的取消,因为发现在点击通知之后,页面虽然跳转了,但是通知图标依然存在。可以在跳转到新的页面之后调用NotificationManager对象的cancel函数,传入一个通知栏id的参数,对相应的id对应的通知取消掉。通知栏的id就是在第四步
manager.notify(1,mBuilder.build());
中第一个参数指定的id号。
点击通知栏之后,跳转到了NewsMainActivity活动页面,所在NewsMainActivity的onCreate函数中对通知进行取消
public class NewsMainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_main); NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); manager.cancel(1); } }
相关文章推荐
- BLE Android开发中的问题
- Android中Context用法详解
- Android性能优化之常见的内存泄漏
- Android Button2.监听事件
- Android Context 上下文或者叫做场景
- Android kernel
- Android图片压缩(质量压缩和尺寸压缩 File, Stream和Bitmap)
- Android利用AccessibilityService实现自动装总结(二)
- 面向对象的六大原则(二)-- 开闭原则(切合Android,ImageLoader)
- Android增强的LinearLayout,带分隔线
- Android_YouthArea之ApeendTextView
- 从Android访问PC端的port (reverse port forwarding)
- Android学习历程11-SharedPreferences介绍
- Android应用Design Support Library完全使用实例
- 分享
- android notifyForDescendents 为false 的含义
- android Xutils 数据库操作源码分析
- Android Activity 之 重新创建
- Android Support 包一探究竟
- Android捕获程序异常退出时的错误log信息