Notification的学习,4.0前后的差别

android 4.0 前后很多api都有了较大的差别,不多说现在学习下notification前后实现的差别

public class MainActivity extends ActionBarActivity {
	private static final int NOTIFY_ID = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

     public void tell(View v)
    {
  //  **************android 4.0后*************************************
    	String title="mynotice";//通知栏的标题
    	String store="hahagaga";
    	 NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    	//intent是点击notification后激活的意图
    	 Intent intent = new Intent(this,MainActivity.class);
//    	 注意:如果要以该Intent启动一个Activity,一定要设置 Intent.FLAG_ACTIVITY_NEW_TASK 标记。
//    	 Intent.FLAG_ACTIVITY_CLEAR_TOP :如果在当前Task中,有要启动的Activity,那么把该Acitivity之前的
//    	                 所有Activity都关掉,并把此Activity置前以避免创建Activity的实例
//    	 Intent.FLAG_ACTIVITY_NEW_TASK :系统会检查当前所有已创建的Task中是否有该要启动的Activity的Task,
//    	                若有,则在该Task上创建Activity,若没有则新建具有该Activity属性的Task,并在该新建的Task上创建
//    	         Activity。更多请参见 “ (转载)Android下Affinities和Task ”
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.putExtra("store", store);  

         //contentIntent是修饰intent的
//         Intent :意图,即告诉系统我要干什么,然后系统根据这个Intent做对应的事。如startActivity相当于发送消息,
//         			而Intent是消息的内容。
//         PendingIntent :包装Intent,Intent 是我们直接使用 startActivity , startService 或 sendBroadcast
//         启动某项工作的意图。而某些时候, 我们并不能直接调用startActivity , startServide 或 sendBroadcast ,
//         而是当程序或系统达到某一条件才发送Intent。如这里的Notification,当用户点击Notification之后,由系统发
//         出一条Activity 的 Intent 。因此如果我们不用某种方法来告诉系统的话,系统是不知道是使用 startActivity,
//         startService 还是 sendBroadcast 来启动Intent 的(当然还有其他的“描述”),因此这里便需要PendingIntent。
         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);//FLAG_ONE_SHOT  

         Notification notification = new Notification.Builder(getApplicationContext())
                             .setContentTitle(title)
                             .setContentText(store)
                             .setContentIntent(contentIntent)
                             .setSmallIcon(R.drawable.hahagaga)
                             .setAutoCancel(true)
                             .setWhen(System.currentTimeMillis())
//                             .setDefaults(Notification.DEFAULT_ALL)  //所有的设为系统默认,一般和短信通知一样
                             .build();

       //设置默认   DEFAULT_LIGHTS  默认灯
         //DEFAULT_SOUND   默认声音
         //DEFAULT_VIBRATE  默认震动
         //DEFAULT_ALL 以上默认

         //led灯的显示
         notification.ledARGB = Color.RED;
         notification.ledOffMS = 0;
         notification.ledOnMS = 1;
         notification.flags = notification.flags | Notification.FLAG_SHOW_LIGHTS;
//         通常为了简便写成notification.flags |= Notification.FLAG_SHOW_LIGHTS;,这样可以为通知设置多个flag
         notification.flags |= Notification.FLAG_AUTO_CANCEL;

         //通知来时候震动,vibrate是震动的方式,
//         * final Activity activity  :调用该方法的Activity实例
//         * long milliseconds :震动的时长,单位是毫秒
//         * long[] pattern  :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒
//         * boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次
         long[] vibrate = new long[] { 1000, 1000, 1000, 1000};
         notification.vibrate = vibrate;

//         资源会获得应用的uri的方法
         //通知来时候的声音
         Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.zp1);
         notification.sound=uri;//Uri.parse("/data/data/zp1.mp3");
         //启动notification
         notificationManager.notify(NOTIFY_ID, notification); //第一个参数是标识通知的唯一码,上面自己定义的变量

//  **************android 4.0前*************************************
//    	String title="mynotice";//通知栏的标题
//    	String store="hahagaga";
//    	 NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//         Notification notification = new Notification();
//         notification.flags |= Notification.FLAG_SHOW_LIGHTS;
//         notification.flags |= Notification.FLAG_AUTO_CANCEL;
//         notification.defaults = Notification.DEFAULT_ALL;
//         notification.icon = R.drawable.hahagaga;
//         notification.when = System.currentTimeMillis();
//
//         Intent intent = new Intent(this,MainActivity.class);
//         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//         intent.putExtra("store", store);
//         PendingIntent contentIntent = PendingIntent.getActivity(this, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);//FLAG_ONE_SHOT
//          //Change the name of the notification here
//         notification.setLatestEventInfo(this, title, store, contentIntent);
//         notificationManager.notify(NOTIFY_ID, notification);  

    }

}

  

时间: 2024-10-13 22:44:32

Notification的学习,4.0前后的差别的相关文章

ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 诸君,我喜欢嫩的--呸呸呸 诸君,我喜欢3D咋了?新事物会替代旧事物不是~ ArcGIS API for JavaScript 4.2概述 AJS 4.2,即ArcGIS API for JavaScript 4.2,是美国ESRI公司针对WebGIS市场推出的.利用JavaScript和Dojo开发的一款产品,它在2016年12月发布.而AJS 4.0 beta则在一年前就发布了. 关于AJS3和AJS4选择的问题,

学习vue2.0

学习vue2.0总结: 一.基础 1.局部组件与全局组件: 全局组件:Vue.compotent(组件名,options),参考网址:http://www.cnblogs.com/yesyes/p/6658611.html 局部组件:export default {compotents: {组件名[:组件实例]}} 2.一个组件被某一组件引用多次??? 3.props: props 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来.这是为了防止子组件无意修改了父组件的状态--这

.Net学习 第0季 学前入门

.Net 视频学习第0季 学前入门 .Net Framework 是 .Net平台中不可缺少的一部分,它提供了一个稳定的运行环境来保证我们基于.Net平台开发的各种应用能够正常地运行. C#是一种编程语言,可以开发基于.Net平台的应用.(.Net平台支持多种编程语言,但C#是主流) 桌面应用程序(winform),internet应用程序(ASP.NET),手机开发,Unity3D游戏开发或虚拟现实. .Net两种交互模式:C/S(客户端/服务器)和B/S(浏览器/服务器).桌面应用程序一般是

我的Javascript学习路程(0):开始学习吧

我自己也有一本Javascript书籍,是自己上大学的时候学校给提供的,现在,我依旧带着这本书.我决定要把这本书在重新温习一下.然后,开启下面的Javascript之旅.这是我看到博客园一位园友写的,感觉,自己也应该重新读一次Javascript. 1. 从头到尾对一遍<Javascript高级程序设计>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书<编写可维护的javascript>,从编码规范,技巧,模式,等各个方面深入体会j

做项目学习Django2.0开发

课程详情可访问:项目学习django2.0.3 项目代码可加qq群:631575625 下载 原文地址:http://blog.51cto.com/13340781/2122185

万树IT:Android软件开发必学习的0基础内容

如今安卓系统中国的前景市场是非常广阔的,它主要针对的是移动设备市场,而如今智能手机已经占据人们生活不能缺少的一部分.所以,很多行业投入到安卓软件开发,进入到安卓开发的人才也越来越多. 安卓应用软件开发必学习的5大基础内容: 1.编程语言 2.基础应用开发 3.核心组件开发Android论坛交流 4丶安卓论坛交流学习 5.深入开发 Android软件开发必学习的0基础内容 1.编程语言的学习 安卓应用软件开发中有很多的编程语言可以使用,所以应该重点学习以下几种编程语言. ①  C/C++语言.  

通知栏Notification的学习

转:http://blog.csdn.net/yczz/article/details/28416893 在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. 下面就来说说经常会使用到通知机制中的通知栏框架(Notificaiton),它适用于交互事件的通知.它是位于顶层可以展开的通知列表.它会时不时的提醒你什么软件该更新了,什么人发你微信消息了等.

操作系统---学习笔记0

注:本笔记内容是跟随“网易云课堂”--哈工大--李治军老师的公开课学习的,感谢李老师百忙之中为广大学子提供的优质教学资源. 主要平台和工具简介 x86模拟器Bochs Bochs是一个免费且开放源代码的IA-32(x86)架构PC机模拟器.在它模拟出的环境中可以运行Linux.DOS和各种版本的Windows等多种操作系统.而Bochs本身具有很高的移植性,可以运行在多种软硬件平台之上,这也是我们选择它做为本书的指定模拟器的主要原因.如果您想拥抱自由的Linux,那么Bochs几乎是您的不二选择

【nodejs学习】0.nodejs学习第一天

1.模块 大一点的程序都需要模块化,nodejs也不例外,代码放到不同的文件中,每一个文件就可以是一个模块,文件路径名就是一个模块名.每个模块中包含三个预先定义的变量: 1.require:用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象,".js"可以省略. eg:var fool1 = require('./foo');//.foo.js,/home/user/foo var data = require('./data.json');//加载json文件