博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【android】通知的使用方法整理
阅读量:4144 次
发布时间:2019-05-25

本文共 2765 字,大约阅读时间需要 9 分钟。

这里是目录qwq 试着用了一下markdown

使用通知:(本文内容来自《第一行代码》整理)

1. 简单创建

①对通知进行管理

可以用 Context的getSystemService() 传入Context.NOTIFICATION_SERVICE表明这个无所不能的大管家今天来管理的是"通知" 啊哈哈

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

②使用一个Builder构造器来创建Notification 对象

support-v4库中提供了一个NotificationCompat 类,使用这个类的构造器兼容性会最好一些 因为嘛这个总是升级

Notification notification = new NotificationCompat.Builder(context).build();
此时可以设置很多连缀 只要context下面不加. 换行 直接可以继续用
setContentText()/ setContentTitle() (这俩都是直接传入文本)
setWhen() 方法用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上。setSmallIcon() 方法用于设置通知的小图标,注意只能使用纯alpha图层的图片进行设置,小图标会显示在系统状态栏上。setLargeIcon() 方法用于设置通知的大图标,当下拉系统状态栏时,就可以看到设置的大图标了。

③使用notify()方法显示

manager.notify(1, notification);

第一个是id 每个通知不同/ 第二个是刚刚建好的那个对象~

④实战用法
switch (v.getId()) {            case R.id.send_notice:                NotificationManager manager = (NotificationManager) getSystemService                    (NOTIFICATION_SERVICE);                Notification notification = new NotificationCompat.Builder(this)                        .setContentTitle("This is content title")                        .setContentText("This is content text")                        .setWhen(System.currentTimeMillis())                        .setSmallIcon(R.mipmap.ic_launcher)                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),                            R.mipmap.ic_launcher))                        .build();                manager.notify(1, notification);                break;            default:                break;        }

还可以吧 不过大小图标最好换一下

2、通知详细信息 PendingIntent

①通知的具体内容展示

它主要提供了几个静态方法用于获取PendingIntent的实例,可以根据需求来选择是使用getActivity() 方法、getBroadcast() 方法,还是getService()方法

现在第一个是context 第二个一般是0 第三个是intent 第四个一般是0。
NotificationCompat.Builder这个构造器还可以再连缀一个setContentIntent() 方法,接收的参数正是一个PendingIntent 对象。因此,这里就可以通过PendingIntent构建出一个延迟执行的“意图”,当用户点击这条通知时就会执行相应的逻辑。
对于另一个活动~~ 我们新增代码如下

Intent intent = new Intent(this, NotificationActivity.class);                PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

中间加一个.setContentIntent(pi)

有了这个延迟的"意图" 之后就可以响应,点击事件了!!

②自动注销

可以直接连缀的时候.setAutoCancel(true)

也可以在外面的manager那里 cancel(1) 1是之前我们自己设置的那个id
##3.振动与声音
声音:直接连缀
.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) .build();
振动:使用vibrate 这个属性。它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长,以此类推。
.setVibrate(new long[] {0, 1000, 1000, 1000 })就是 在通知到来的时候立刻振动1秒,然后静止1秒,再振动1秒
振动需要权限:
<uses-permission android:name="android.permission.VIBRATE" />
灯亮起和暗去 .setLights(Color.GREEN, 1000, 1000)
.setDefaults(NotificationCompat.DEFAULT_ALL)这样是直接!!默认跟了全局设置
.setPriority(NotificationCompat.PRIORITY_MAX)是跳出…… 啊好了可以不管了)
总之还挺简单的 : 管理员+ 实体+ 构造方法一大堆 加最后notify~完成!

转载地址:http://yguti.baihongyu.com/

你可能感兴趣的文章
用go的flag包来解析命令行参数
查看>>
来玩下go的http get
查看>>
感受一下go协程goroutine------协程在手,说go就go
查看>>
队列和栈的本质区别
查看>>
matlab中inline的用法
查看>>
如何用matlab求函数的最值?
查看>>
Git从入门到放弃
查看>>
java8采用stream对集合的常用操作
查看>>
EasySwift/YXJOnePixelLine 极其方便的画出真正的一个像素的线
查看>>
Ubuntu系统上安装Nginx服务器的简单方法
查看>>
Ubuntu Linux系统下apt-get命令详解
查看>>
ubuntu 16.04 下重置 MySQL 5.7 的密码(忘记密码)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
HTTPS那些事 用java实现HTTPS工作原理
查看>>
oracle函数trunc的使用
查看>>
MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
查看>>
BCP
查看>>
怎样判断子进程已经结束 process.waitFor();的问题
查看>>
classpath
查看>>
研究线程
查看>>