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. antlr 4新特性总结及与antlr v3的不同

    antlr 4新特性总结及与antlr v3的不同 学习曲线低.antlr v4相对于v3,v4更注重于用更接近于自然语言的方式去解析语言.比如运算符优先级,排在最前面的规则优先级最高: 层次更清晰. ...

  2. 源码篇——AsyncTask机制

    AsyncTask new AsyncTask<String,String,String>(){ // 运行在主线程中,做预备工作 onPreExecute(){ } // 运行在子线程中 ...

  3. Freemarker 浅析

    今天分享一下一个模板语言的使用,它就是Freemarker,有点类似与前些日子做Python的Django中的模板语言,其实原理上都是相似的.所以这里就不对那些基础性的语法类的直至进行讲解了,就拿几个 ...

  4. Cartographer资料分享

    中文资料稍后补充 Introducing Cartographer By Tully Foote on October 5, 2016 10:11 AM From Damon Kohler, Wolf ...

  5. Windows2008 R2上完全卸载Oracle操作步骤

    Windows2008 R2上完全卸载Oracle操作步骤 1.关闭Oracle所有的服务,按[win+R]运行[services.msc]找到所有Oracle开头的服务,点击停止. 2.使用Orac ...

  6. EXCEL技能之数据去重

    本篇不属于技术类博文,只是想找个地方记录而已,既然是我的博客嘛,那就自己想写什么就写什么了. CRM中有个EXCEL数据导入功能,几千条数据导入CRM后去重,那是死的心都有的.往回想想EXCEL是否有 ...

  7. ToolBar与AppcompatAcitivity实现浸入式Statusbar效果

    toolbar是android sdk API21新增的组件,下面是谷歌官方的介绍文档: A standard toolbar for use within application content. ...

  8. (一二四)tableView的多组数据展示和手动排序

    最近在写一个轻量级的网络游戏,遇到了技能优先顺序手动排序的需求,我就想到了iOS自带的tableView编辑功能,对其进行了初步探索,最后做出的效果如下图所示: 点击左边可以删除,拖住右边可以手动排序 ...

  9. 04 AutoCompleteTextView

    作用:输入部分文字跳处下拉框列出相应的条目 <pre name="code" class="html"> <!-- 当文本框出现两个字符才开始 ...

  10. 使用TT模板+mvc+wcf实现简单查询

    今天是除夕,小编的这篇博客是掐着点儿发的,在此,祝各位小伙伴新年快乐,身体健康,万事如意:喜从天降,欣喜若狂:喜气盈门,好事成双:好人好运,金玉满堂:神采飞扬,如愿以偿,财源滚滚来,福如东海长:伴随着 ...