Notification 介绍见:https://developer.android.com/reference/android/app/Notification.html



Android api 一直对通知栏进行升级! 包括7.0继续改善快捷通知栏,接下来介绍下通知栏不同版本的兼容适配.



**Android  JELLY_BEAN(16) 通知可以直接new Notification()**



     Notification notification = new Notification();

     notification.icon = android.R.drawable.stat_sys_download_done;

     notification.flags |= Notification.FLAG_AUTO_CANCEL;

    // 设置点击事件的PendingIntent

     notification.setLatestEventInfo(mContext, aInfo.mFilename, contentText, pendingIntent);



**Android .LOLLIPOP_MR1(22) 通知可以通过Notification.Builder()**



    Notification notification = new Notification.Builder(mContext)

     .setAutoCancel(false)

     .setContentIntent(pi)// 设置pendingIntent

     .setSmallIcon(android.R.drawable.stat_sys_download_done)

     .setWhen(System.currentTimeMillis())

     .build();

    

**Android .LOLLIPOP_MR1(22)以上 也就从6.0开始  只能通过new NotificationCompat.Builder(mContext)**



    Notification notification = new NotificationCompat.Builder(mContext)

     .setContentTitle(aInfo.mFilename)

     .setContentText(contentText)

     .setSmallIcon(android.R.drawable.stat_sys_download_done)

     .setContentIntent(pi)// 设置pendingIntent

     .build();



# 综合代码: #



     //准备intent

     Intent intent = new Intent();

      String action = "com.skay.myapp.action";

     intent.setAction(action);

    

     //notification

      Notification notification = null;

      String contentText;

      // 构建 PendingIntent

      PendingIntent pi = PendingIntent.getActivity(mContext, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

     //版本兼容

     

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {

       notification = new Notification();

     notification.icon = android.R.drawable.stat_sys_download_done;

     notification.flags |= Notification.FLAG_AUTO_CANCEL;

     notification.setLatestEventInfo(mContext, aInfo.mFilename, contentText, pi);

    

    } else if (Build.VERSION.SDK_INT >= 23) {

       notification = new NotificationCompat.Builder(mContext)

     .setContentTitle(aInfo.mFilename)

     .setContentText(contentText)

     .setSmallIcon(android.R.drawable.stat_sys_download_done)

     .setContentIntent(pi).build();

    

    } else if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN &&

      Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {

       notification = new Notification.Builder(mContext)

     .setAutoCancel(false)

     .setContentIntent(pi)

     .setSmallIcon(android.R.drawable.stat_sys_download_done)

     .setWhen(System.currentTimeMillis())

     .build();

    }

    mNotificationManager.notify(RESULT_ID, notification);

Android Notification 版本适配方案的更多相关文章

  1. Android最佳实践之SystemBar状态栏全版本适配方案

    前言 自从MD设计规范出来后,关于系统状态栏的适配越受到关注,因为MD在5.0以后把系统状态栏的颜色改为可由开发者配置的,而在5.0之前则无法指定状态栏的颜色,所以这篇就说说使用Toolbar对系统状 ...

  2. 【cocos2d-x 手游研发小技巧(3)Android界面分辨率适配方案】

    先感叹一下吧~~android的各种分辨率各种适配虐我千百遍,每次新项目我依旧待它如初恋···· 每家公司都有自己项目工程适配的方案,这种东西就是没有最好,只有最适合!!! 这次新项目专项针对andr ...

  3. Android开发——Android手机屏幕适配方案总结

    )密度无关像素,单位为dp,是Android特有的单位 Android开发时通常使用dp而不是px单位设置图片大小,因为它可以保证在不同屏幕像素密度的设备上显示相同的效果. /** * dp与px的转 ...

  4. 最清晰的Android多屏幕适配方案

    问题的引入 当您的Android应用即将发布的时候,如果你想让更多的用户去使用你的应用,摆在工程师面前的一个重要问题就是如何让你的应用能在各种各样的终端上运行,这里的各种各样首当其冲的就是不同的屏幕分 ...

  5. Android的代码适配方案

    public class DensityUtil { private DensityUtil(){ throw new AssertionError(); } /** * dp转px * @param ...

  6. android屏幕适配方案

    曾经看了android的屏幕适配方案,有非常多种.当中自己用到的一种是:先找一款主流的分辨率的android机,如:1080*1920的分辨率做基准,然后在这个基准上.调整好一切布局.图片.适配其它手 ...

  7. 版本适配 sdk version MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Android各版本迭代改动与适配集合

    前言 今天分享的面试题是: Android在版本迭代中,总会进行很多改动,那么你熟知各版本都改动了什么内容?又要怎么适配呢? Android4.4 发布ART虚拟机,提供选项可以开启. HttpURL ...

  9. android多分辨率多密度下界面适配方案

    前言 Android 设计之初就考虑到了UI在多平台的适配,它本身提供了一套完善的适配机制,随着版本的发展适配也越来越精确,UI适配主要受平台两个因素的影响:屏幕尺寸 (屏幕的像素宽度及像素高度)和屏 ...

随机推荐

  1. CoreText精彩文字轮廓绘制动画的一点改进

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原文在: http://oleb.net/blog/2010/ ...

  2. SVN与eclipse整合与使用、SVN与Apache整合

    SVN与eclipse整合 下载SVN插件(http://subclipse.tigris.org) http://subclipse.tigris.org/servlets/ProjectDocum ...

  3. Android 之Toast讲解-android学习之旅(一)

    Toast比较常用,用于显示简短的提醒,比如网络连接断开等. Toast的简单编码实例 findViewById(R.id.button1).setOnClickListener(new OnClic ...

  4. iOS中 如何将自己的框架更新到cocopods上 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 为了更方便的集成第三方框架有了cocopods 的, 当我们有了相对比较好的框架的时候如何更新到cocopods ...

  5. C语言获取文件大小

    C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在C语言中就比较麻烦,例如获取一个文件的大小.Java中File类有个length函数,Python中os.path包中有个getsize ...

  6. Java相关错误

    http://blog.csdn.net/pipisorry/article/details/51291063 使用hadoop jar ./Hw2Part1.jar /hw2/example-inp ...

  7. 【一天一道LeetCode】#350. Intersection of Two Arrays II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given t ...

  8. 《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解

    这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序.  * 排序有两种方式  * A:自然排序: 从小到大排序  * B:比较器排序    Comp ...

  9. iOS开发xcode报错:"xxxxxx"has been modified since the precompiled header was built

    最近做iOS开发,老是遇到这种问题,正好我有两个版本的Xcode,换了另一个,就正常了,所以也一直没解决. 今天又遇到这个问题,就查了一下资料,找到了解决办法,在次记录一下方便查找,就是在Xcode中 ...

  10. jQuery 异步上传插件 Uploadify302 使用 (JavaEE Spring MVC)

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.而且是Ajax的,省去了自己写Ajax上传功能的麻烦.不过官方提供的实例时php版本的,本文将详细介绍Uploadify ...