Android自定义Notification添加点击事件
程序员文章站
2022-04-11 18:39:20
前言
在上一篇文章中《notification自定义界面》中我们实现了自定义的界面,那么我们该怎么为自定义的界面添加点击事件呢?像酷狗在通知栏 有“上一首”,“下一首”等...
前言
在上一篇文章中《notification自定义界面》中我们实现了自定义的界面,那么我们该怎么为自定义的界面添加点击事件呢?像酷狗在通知栏 有“上一首”,“下一首”等控制按钮,我们需要对按钮的点击事件进行响应,不过方法和之前的点击设置不一样,需要另外处理,下面我将进行简单的说明。
实现
同样,我们需要一个service的子类myservice,然后在myservice的oncreate中设置,如下代码:
public class myservice extends service { public static final string onclick = "com.app.onclick"; private broadcastreceiver receiver_onclick = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { if (intent.getaction().equals(onclick)) { vibrator vibrator = (vibrator) getsystemservice(context.vibrator_service); vibrator.vibrate(1000); } } }; @override public void oncreate() { super.oncreate(); notification notification = new notification(r.drawable.ic_launcher, "jcman", system.currenttimemillis()); remoteviews view = new remoteviews(getpackagename(),r.layout.notification); notification.contentview = view; intentfilter filter_click = new intentfilter(); filter_click.addaction(onclick); //注册广播 registerreceiver(receiver_onclick, filter_click); intent intent_pre = new intent(onclick); //得到pendingintent pendingintent pendintent_click = pendingintent.getbroadcast(this, 0, intent_pre, 0); //设置监听 notification.contentview.setonclickpendingintent(r.id.btn,pendintent_click); //前台运行 startforeground(1, notification); } @override public ibinder onbind(intent intent) { return null; } }
可以看到,我们先得到broadcastreceiver的一个对象,然后在onreceiver里面实现我们的操作,我设置成点击时候手机震动一秒钟,当然不要忘记在配置文件添加震动的权限,不然到时候就会出错了。如果对广播没有了解的,那么可以先去了解一下广播的机制,这里我使用的是动态注册广播的方法,还有另外一种方法来注册,不过我更喜欢动态注册的罢了。
小结
看到在notification添加一个progressbar来实现下载的进度提示,这里需要用到更新notification界面的知识,虽然和在activity中更新界面不太一样,但是也不是在复杂,因为我并没有用到这方面的知识,所以这里就不给大家介绍了,有兴趣的可以搜相关的内容。
上一篇: 小米电视4 55英寸降价:4.9mm超薄设计 3699元
下一篇: Kotlin基础学习之位运算