Notification 的使用
2015-07-27 17:42
344 查看
直接附代码:
package com.qianfeng.notification; import android.os.Bundle; import android.app.Activity; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.support.v4.app.NotificationCompat; import android.view.View; import android.widget.RemoteViews; public class MainActivity extends Activity { private static final int REQUEST_CODE=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 发送普通的通知 * @param view */ public void send(View view){ //创建通知对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this); builder.setContentTitle("凤姐");//设置通知的标题 必须设置 builder.setContentText("有空吗?吃个饭");//设置通知的内容 必须设置 builder.setSmallIcon(R.drawable.f047);//设置通知的小图标 必须设置 //可选属性 Bitmap bm=BitmapFactory.decodeResource(getResources(), R.drawable.f039);//将res下的图片转换成bitmap对象 builder.setLargeIcon(bm);//设置通知的大图标内容 builder.setContentInfo("info");//设置通知的消息info builder.setWhen(System.currentTimeMillis());//设置通知的发送时间 long类型 //创建延迟意图对象 PendingIntent 1参数 上下文 2参数 请求码 3参数标示intent对象 4标记FLAG_ONE_SHOT 标示当前对象创建一次 Intent intent=new Intent(MainActivity.this,ResultActivity.class); PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, REQUEST_CODE, intent, PendingIntent.FLAG_ONE_SHOT); builder.setContentIntent(pendingIntent); //通过系统服务获取通知管理者对象 NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //通过通知管理者对象发送通知 1参数 标示当前的通知的唯一的id 2参数 标示发送通知的对象 manager.notify(1, builder.build()); } /** * 发送大通知 * @param view */ public void send_big(View view){ NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this); builder.setContentTitle("小强"); builder.setContentText("还钱吧"); builder.setSmallIcon(R.drawable.f039); //标示创建大图通知 复杂内容的样式对象 NotificationCompat.InboxStyle style=new NotificationCompat.InboxStyle(); String[] strs={"你咋还不还钱呢?","你快还钱吧","还不还啊","再不还揍你"}; for(int i=0;i<strs.length;i++){ style.addLine(strs[i]);//将数据源中的内容添加到大图的样式中 } builder.setStyle(style);//将通知的样式设置到通知中 Intent intent=new Intent(MainActivity.this,ResultActivity.class); intent.putExtra("str", "测试"); PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, REQUEST_CODE,intent, PendingIntent.FLAG_ONE_SHOT); builder.setContentIntent(pendingIntent); NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(1, builder.build()); } /** * 发送带有进度条的通知 * @param view */ private NotificationManager manager; public void send_progress(View view){ final NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this); builder.setContentTitle("显示下载进度"); builder.setContentText("下载中..."); builder.setSmallIcon(R.drawable.f047); manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); new Thread(){ public void run() { for(int i=0;i<=100;i+=5){ //setProgress(最大进度,当前进度,标示通知的样式 false标示具有明确进度 true没有明确进度) builder.setProgress(100, i, true); manager.notify(1, builder.build());//更新通知 进度没更新一次都需要通知进度条改变 try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } builder.setContentText("下载完毕"); manager.notify(1, builder.build()); } }.start(); } /** * 发送自定义通知 * @param view */ public void send_cus(View view){ NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this); //将自定义的xml文件布局转换成RemoteViews对象 RemoteViews rv=new RemoteViews(getPackageName(),R.layout.activity_notification); rv.setTextViewText(R.id.textView1, "标题");//根据指定控件的id设置内容 rv.setTextViewText(R.id.textView2, "内容"); rv.setTextColor(R.id.textView1, Color.RED); rv.setImageViewResource(R.id.imageView1, R.drawable.f039); builder.setContent(rv);//将自定义的通知对象进行设置 builder.setContentTitle("自定义通知"); builder.setSmallIcon(R.drawable.f047); NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(1, builder.build()); } }
相关文章推荐
- Best Time to Buy and Sell Stock II
- zookeeper无法启动"Unable to load database on disk"
- registerClass和registerNib的区别
- 让 Vim 支持 nginx 语法(syntax) 格式化配置文件
- supervisor的配置
- 标准Http协议支持六种请求方法
- 最长公共上升子序列 csu1120 病毒
- Notification 的基本知识
- HDOJ 1012 u Calculate e(水题)
- 80端口被NT kernel & System占用
- PHP中的SESSION机制
- 第一篇博客
- MVC interview question
- 【linux高级程序设计】(第九章)进程间通信-管道 2
- 运维必须掌握的Linux面试题
- iOS基础
- hdoj1106排序(sort)
- OC学习对象的存储细节,isa指针
- ActiveReport开发入门-列表的交互性
- JAVA里的别名机制