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. static修饰符详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  2. Linux 高性能服务器编程——TCP协议详解

    问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一 ...

  3. C++ ifstream,ofstream读写二进制文件

    为什要吧数据存为二进制 这个嘛,是我个人习惯,一般,我们会把日志文件存为文本文件.数据文件存成二进制文件. 其实,我们接触的文件,比如图像.视频都是以二进制的形式存储的,要想查看这类数据,必须知道数据 ...

  4. CCSpriteBatchNode中存放元素的一点理解

    该对象只能包含基于CCSprite的对象,并且该要求适用于一切子孙对象.即加入CCSpriteBatchNode的任何对象都必须是CCSprite或其子类. 比如CCSpriteBatchNode包含 ...

  5. 反射模拟DbUtils实现ResultSet转成Bean实例

    前几天接触到了apache的一个小框架DbUtils,真的被其优雅的设计所震撼到了,尤其是其中的 MyBean mybean = QueryRunner.query(sqlConnection,sql ...

  6. [linux RedHat]windows下使用putty远程连接linux 下载JDK和tomcat

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/43154543 本文作者:sushengmiyan ------------------ ...

  7. iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge

    WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star.我去翻看了它的第一版本已经是4年前了,在版本V4.1.4以 ...

  8. 剑指Offer——携程笔试题+知识点总结

    剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...

  9. UNIX环境高级编程——实现uid to name

    setpwent()用来将getpwent()的读写地址指回文件开头,即从头读取密码文件中的账号数据. strcut passwd * getpwent(void); getpwent()用来从密码文 ...

  10. Socket实现聊天客户端

    今天在极客学院上看到了一个关于Socket的视频讲解,感觉还不错,就写了份代码,拿来分享一下. Socket使用方法 关于Socket的使用,我们首先要弄清楚的是,在服务器端还是在客户端使用.因为这的 ...