Notification使用
android api 指南上很多部分谷歌 官方 已经翻译成了 中文,先看下 谷歌官方对notificatio
的介绍:
通知是您可以在应用的常规 UI 外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在通知区域中。用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看。- notification 存在两种设置 view 方式,可以选择使用系统自带的view 效果,
- 系统通知 可以分三步 去走
- ① 获取 NotificationManager 管理者
- ② 构建 Notification 对象 直接New 就ok 了
- ③ 开启通知 管理者对象.notify(int id,Notification notification);
注意
- 使用notification 如果是一个通知的话 则id 的值 多次通知的id 的值必须相同,
否则会开一个新的通知 - *在使用系统自带的通知的时候,务必设置 setSmallIcon(int resid),否则程序报错
-* 注意在通过通知 转到本 activity时 activity 的launchMode 应该设置*
为singleTask模式
使用系统通知界面
- 在使用notification 进行开发时,若果没有特殊要求我们可以采用系统。自带的通知进行开发,
其构建 构建管理者对象 和 构建 发送通知的步骤都是一样的,可看上文,构建Notification 对象,以及属性设置如下:
获取 NotificationManager 对象:
api 中:
Use with getSystemService(Class) to retrieve a AccessibilityManager for giving the user feedback for UI events through the registered event listeners.
通过getSystemService(String name) 方法获取 , 由上文可见 上边方法 为上下文的方法
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);//其中name 的参数表示 获得一个Notification 对象
` build = new NotificationCompat.Builder(this)
.setContentTitle("标题") //大保健
.setContentText("通知来了")//去个火
.setSubText("smallText")// 小保健`
// 设定为 OneShut 之后 自动消失比较好
.setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)) //参数为显示一次
.setAutoCancel(true)//点击启动之后 图标消失
.setVibrate(new long[]{300, 200, 300, 200}) // 设置震动
.setLights(0xffff0000, 1000, 1000)//呼吸灯
//.setContent(views)// 指定远程 的View
.setSmallIcon(R.mipmap.ic_launcher).build();`
notification 使用自定义view ,以及属性详解:
- 其实自定义 view 用法 使用 系统系统自带的View 差别并不大
- 无非就多了一个 RemoteViews view的使用 //设置远程view
在现在很多app 中都使用了 大视图通知 :
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN){
build.bigContentView=views; // 采用大视图通知
}build.bigContentView=views;//用于api版本大于 16的时候
在自定义布局上 设置 监听 方法如下:
RemoteViews views = new RemoteViews(getPackageName(), R.layout.nofication);//注意获取RemoteViews 对象的时候务必指定包名
Intent play = new Intent(this, MainActivity.class);
play.putExtra("text","播放");
views.setOnClickPendingIntent(R.id.pau,PendingIntent.getActivity(this,0,play,PendingIntent.FLAG_CANCEL_CURRENT));
-
- 官方 api 如是说:
注意在使用 了 RemoteViews 之后 ,系统原生的效果 除了 smallIcon之外 便会失效
- -
最后使用管理者,开启通知即可