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. C++语言编译系统提供的内部数据类型的自动隐式转换

    C++语言编译系统提供的内部数据类型的自动隐式转换规则如下: 程序在执行算术运算时,低类型自动隐式转换为高类型. 在函数调用时,将实参值赋给形参,系统隐式的将实参转换为形参的类型,并赋值给形参. 函数 ...

  2. NSDictionary writeToFile:atomically: 时失败

    一.现象:如下图,当NSDictionary调用 writeToFile:atomically: 时,如果容器里面包含的对象(即通过 objectForKey: 拿到的对象),为非property l ...

  3. ssh用法及命令

    http://blog.csdn.net/pipisorry/article/details/52269785 什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本 ...

  4. 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决

    解决办法: 1.将当前虚拟机的内容调整大一些(以下转载:http://jingyan.baidu.com/article/414eccf67b8baa6b421f0a60.html) VMware虚拟 ...

  5. 模拟DbUtils实现接口回调机制

    想必大家都用过apache 的DbUtils吧,这个简单的对JDBC的封装小框架真的是非常非常的适合新手的学习呢.逻辑上也不是很复杂,难度刚刚好. 下面我就模仿它来实现一个字符串的处理小框架. 思路 ...

  6. UNIX网络编程——原始套接字(dos攻击)

    原始套接字(SOCK_RAW).应用原始套接字,我们可以编写出由TCP和UDP套接字不能够实现的功能. 注意原始套接字只能够由有 root权限的人创建. 可以参考前面的博客<<UNIX网络 ...

  7. EBS销售(OE)模块常用表

     select * from ra_customers 客户 select * from ra_addresses_all 地址 select * from ra_site_uses_all 用户 ...

  8. Sharing The Application Tier File System in Oracle E-Business Suite Release 12.2

    The most current version of this document can be obtained in My Oracle Support Knowledge Document 13 ...

  9. 【Netty源码分析】ChannelPipeline(二)

    在上一篇博客[Netty源码学习]ChannelPipeline(一)中我们只是大体介绍了ChannelPipeline相关的知识,其实介绍的并不详细,接下来我们详细介绍一下ChannelPipeli ...

  10. 【java虚拟机系列】JVM类加载器与ClassNotFoundException和NoClassDefFoundError

    在我们日常的项目开发中,会经常碰到ClassNotFoundException和NoClassDefFoundError这两种异常,对于经验足够的工程师而言,可能很轻松的就可以解决,但是却不一定明白为 ...