Notification
2015-12-07 17:21
281 查看
在intent pendingintent那篇文章中提到notification,所以就写一下notification
概念
notification就是一个展示给user的一个message,只不过他展示在特定的地方。一个就是我们手机上看到的通知的小图标,还有一个地方就是我们下拉出来的显示框。英文描述这2个地方就是:notification area notification drawer
使用
NotificationCompat.Builder object中我们创建通知的标题啊,内容啊,意图等等。NotificationCompat.Builder.build()创建notification这个对象,最后notificationmanager.notify()发布通知
创建一个简单的通知的例子:
NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(this);
.setSmallIcon(R.drawable.notification_icon);
.setContentTitle("My Notification");
.setContentText("Hello World");
Intent intent=new Intent(this,OtherActivity);
TaskStackBuilder builder=TaskStackBuilder.create(this);
builder.addParentStack(OtherActivity.class);
builder.addNextIntent(intent);
//使用TaskStackBuilder获得pendingIntent
PendingIntent pendingIntent=builder.getPendingIntent(0,PendingIntent.FLAG_UPDATA_CURRENT);
//设置通知的意图 pendingIntent
mBuilder.setContenIntent(pendingIntent);
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//mBuilder.builder()获得一个notification对象 notify发布这个通知
//id是给这个notification的一个标记
manager.notify(id,mBuilder.builder());
这里面最让人困惑的就是为什么要使用TaskStackBuilder,其实就是为了添加back stack。那back stack又是为了什么呢?告诉你,就是为了你按返回不会返回到notification,而是返回home screen。 知道这个以后,你就能很好的理解代码了。就是创建一个back stack,再为这个back stack(OtherActivity的back
stack)设置启动它的Intent,再从中获取PendingIntent,最后将这个pendingIntent传入通知的构建者,发出通知,完成。
当然了,在配置清单中要注意添加蓝色部分
<activity
android:name=".ResultActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
因为这里提到了TaskStackBuilder创建stack 那就再讲一个使用PendingIntent的方式。这种方式不需要构建stack,PendingIntent的获取直接从PendingItent这个类中获取
<activity
android:name=".ResultActivity"
...
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true">
</activity>
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Intent notifyIntent =
new Intent(this, ResultActivity.class);
// 设置的参数代表 创建一个新的,空的task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// 获取PendingIntent
PendingIntent notifyPendingIntent =
PendingIntent.getActivity(
this,
0,
notifyIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(notifyPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());
最后:
android4以后 notification里面增加了一些东西
说我知道的一个 你的notification是可以扩展的
其实就是 首先还是和前面一样创建NotificationCompat.Builder object 并向里面填充数据,只不过加上一步Builder.setStyle()其中要向其中传入一个expanded layout object
概念
notification就是一个展示给user的一个message,只不过他展示在特定的地方。一个就是我们手机上看到的通知的小图标,还有一个地方就是我们下拉出来的显示框。英文描述这2个地方就是:notification area notification drawer
使用
NotificationCompat.Builder object中我们创建通知的标题啊,内容啊,意图等等。NotificationCompat.Builder.build()创建notification这个对象,最后notificationmanager.notify()发布通知
创建一个简单的通知的例子:
NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(this);
.setSmallIcon(R.drawable.notification_icon);
.setContentTitle("My Notification");
.setContentText("Hello World");
Intent intent=new Intent(this,OtherActivity);
TaskStackBuilder builder=TaskStackBuilder.create(this);
builder.addParentStack(OtherActivity.class);
builder.addNextIntent(intent);
//使用TaskStackBuilder获得pendingIntent
PendingIntent pendingIntent=builder.getPendingIntent(0,PendingIntent.FLAG_UPDATA_CURRENT);
//设置通知的意图 pendingIntent
mBuilder.setContenIntent(pendingIntent);
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//mBuilder.builder()获得一个notification对象 notify发布这个通知
//id是给这个notification的一个标记
manager.notify(id,mBuilder.builder());
这里面最让人困惑的就是为什么要使用TaskStackBuilder,其实就是为了添加back stack。那back stack又是为了什么呢?告诉你,就是为了你按返回不会返回到notification,而是返回home screen。 知道这个以后,你就能很好的理解代码了。就是创建一个back stack,再为这个back stack(OtherActivity的back
stack)设置启动它的Intent,再从中获取PendingIntent,最后将这个pendingIntent传入通知的构建者,发出通知,完成。
当然了,在配置清单中要注意添加蓝色部分
<activity
android:name=".ResultActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
因为这里提到了TaskStackBuilder创建stack 那就再讲一个使用PendingIntent的方式。这种方式不需要构建stack,PendingIntent的获取直接从PendingItent这个类中获取
<activity
android:name=".ResultActivity"
...
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true">
</activity>
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Intent notifyIntent =
new Intent(this, ResultActivity.class);
// 设置的参数代表 创建一个新的,空的task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// 获取PendingIntent
PendingIntent notifyPendingIntent =
PendingIntent.getActivity(
this,
0,
notifyIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(notifyPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());
最后:
android4以后 notification里面增加了一些东西
说我知道的一个 你的notification是可以扩展的
其实就是 首先还是和前面一样创建NotificationCompat.Builder object 并向里面填充数据,只不过加上一步Builder.setStyle()其中要向其中传入一个expanded layout object
相关文章推荐
- iOS开发ARC内存管理技术要点
- 聊天数据库
- IOS使用soap。
- 移动小球链表实现
- 理解和掌握类的加载过程以及子类继承父类后,重写方法的调用问题
- 第十三周项目3Floyd算法验证
- 第十三周实践项目~Prim算法的验证
- 第16周项目3归并排序算法的改进
- 3115 高精度练习之减法
- rz和sz上传下载文件工具lrzsz
- 节点 二级节点 三级节点 for循环 树结构
- WMI 编程之接收事件通知
- 第十四周 项目2 二叉树排序树中查找的路径
- 支付宝支付开发教程
- 安装redis,含安装步骤和安装中出现的详细错误分析
- 洞穴探测
- SVG 动画实现弹性的页面元素效果
- IntelliJ IDEA Community Edition 14.1.4下 javafx scenebuilder的使用
- JS原生父子页面操作
- CIFilter 创建二维码