Notification学习
来源:互联网 发布:中联软件 编辑:程序博客网 时间:2024/05/17 23:38
PendingIntent可以看做是对Intent的包装,通过名称可以看出PendingIntent用于处理即将发生的意图,而Intent用来处理马上发生的意图。而对于通知来说,它是一个系统级的全局的通知,并不确定这个意图被执行的时间。当在应用外部执行PendingIntent时,因为它保存了触发App的Context,使得外部App可以如果当前App一样执行PendingIntent里的Intent,就算执行时触发通知的App已经不存在了,也能通过存在PendingIntent里的Context照常执行Intent,并且还可以处理Intent所带来的额外的信息 PendingIntent提供了多个静态的getXxx()方法,用于获得适用于不同场景的PendingIntent对象。一般需要传递的几个参数都很常规,只介绍一个flag参数,用于标识PendingIntent的构造选择:
FLAG_CANCEL_CURRENT:如果构建的PendingIntent已经存在,则取消前一个,重新构建一个。
FLAG_NO_CREATE:如果前一个PendingIntent已经不存在了,将不再构建它。
FLAG_ONE_SHOT:表明这里构建的PendingIntent只能使用一次。
FLAG_UPDATE_CURRENT:如果构建的PendingIntent已经存在,则替换它,常用。
默认通知步骤简述:
1.创建一个manager
2.创建一个builder用于设置通知的属性
3.设置builder的属性(标题,大图标,小图标,内容等)
4.创建一个pendingIntent
自定义通知步骤:
1.创建remoteviews对象
2.设置remoteviews对象的属性
3.设置自定义通知的点击响应事件,创建一个pendingintent,设置并关联响应事件
4.根据builder创建notification
5.利用manager将通知显示出来
public class MainActivity extends AppCompatActivity { private Button defaultStyle; private Button cancelButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); defaultStyle = (Button) findViewById(R.id.default_style); defaultStyle.setOnClickListener(new View.OnClickListener() { @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void onClick(View view) {// 首先需要一个manager NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);// 创建一个builder用于设置通知的属性 Notification.Builder builder = new Notification.Builder(MainActivity.this);// 设置builder的属性// 设置大图标 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher); builder.setLargeIcon(bitmap);// 设置消息来时的提示 builder.setTicker("通知来了");// 设置通知标题 builder.setContentTitle("紧急通知");// 设置通知内容 builder.setContentText("今天放假");// 设置小图标 builder.setSmallIcon(R.mipmap.ic_launcher); builder.setAutoCancel(true);// 创建一个跳转Intent Intent intent = new Intent(MainActivity.this,Main2Activity.class);// 第一个参数:上下文对象 第二个参数:返回的状态码 打三个参数:一个intent,通常是跳转的intent// 第四个参数:是通知与页面的更新类型 PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,100,intent,PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(pendingIntent);// 设置自定义通知// 创建remoteviews对象 RemoteViews views = new RemoteViews(getPackageName(),R.layout.notificationlayout);// 设置remoteviews对象的属性 views.setTextViewText(R.id.title,"喜马拉雅听书"); views.setTextViewText(R.id.text,"姑娘你真是条汉子"); builder.setContent(views);// 设置自定义通知的点击响应事件// 1.创建一个pendingintent Intent intent1 = new Intent(MainActivity.this,Main2Activity.class); PendingIntent pendingIntent1 = PendingIntent.getActivity(MainActivity.this,100,intent1,PendingIntent.FLAG_UPDATE_CURRENT);// 2.设置并关联响应事件 views.setOnClickPendingIntent(R.id.butinfo,pendingIntent1);// 根据builder创建notification Notification notification = builder.build();// 利用manager将通知显示出来 manager.notify(100,notification); } }); cancelButton = (Button) findViewById(R.id.cancel_notification); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {// 1. 拿到manager NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);// 2.取消通知// 取消所有通知 manager.cancelAll();// 取消指定的通知,根据id号来确定对象// manager.cancel(110); } }); }}
0 0
- notification学习
- Notification学习
- Notification学习
- Notification 学习
- Android Notification学习--发出Notification
- Linux Notification 学习
- Notification学习(转载)
- Android学习之Notification
- Linux Notification chain学习
- iOS学习--notification
- Notification 学习笔记
- Linux Notification 学习
- 学习status bar notification
- android的Notification学习
- Android Services学习--Notification
- Notification类的学习
- Android学习之 Notification
- Ceilometer Notification代码学习
- /bin/bash^M: 坏的解释器: 没有那个文件或目录
- 基础数学1003 LightOJ 1341
- Junit测试出现空指针异常
- Pokémon GO的蝴蝶效应——国内哪些APP借了任天堂的东风?
- 函数指针
- Notification学习
- ActiveMQ简介
- 基础数学1004 LightOJ 1336
- GCC简明教程(2)
- spark-submit 提交 spark-examples-1.6.1-hadoop2.6.0.jar
- Hdu 5451 Best Solver(快速幂取模+循环节) -2015 ACM-ICPC沈阳网赛1002
- 杂记
- UVA - 133 The Dole Queue
- 基础数学1005 LightOJ 1282