Android爬取第三方app推送消息
该篇文章是在公司的一个特别奇葩的需求之下产生的,我们公司的产品需要监听一些新闻app的推送消息,从而进行自己的消息推送。作为一个Android Coder第一反应就是直接用NotificationListenerService进行推送监听不就完了嘛,So Easy。说干就干,百度实例代码,ctrl c+ctrl v一气呵成,run!这不就拿到了吗。然后屁颠的去找产品经理邀功。产品经理看完头都不抬的说我要的是推送携带的详细参数,不是简单的title 和content这种文字信息。我的天,这个时候我在开始细细琢磨这个需求,这个需求的本质就是获取第三方app通知栏通知中写的详细参数——再直白点就是获取第三方App的通知栏通知携带的Intent。有点方啊,坦白说这种需求不用动脑子都知道Android肯定不会给你这个权限的,要是谁都能随便拿到那那行啊。但是说归说还是要尝试一下。我们都知道Notification所携带的参数都是由Intent封装的所以找到这个Intent就行,而在生成Notification时Intent有封装进了PendingIntent里面,而这个PendingIntent是我们通过NotificationListenerService可以获取道的。所以基本思路就出来了通过PendingIntent获取Intent进而获取Intent携带的参数。
好了,废话不多说,下面进入正文,文章主要会讲到以下几个问题
-
利用NotificationListenerService监听获取第三App的Notification
-
获取Notification中的Intent
-
获取第三方App Intent携带的信息
-
解析第三方App的Serializable对象
-
解析第三方App的Parcelable对象
利用NotificationListenerService监听获取第三App的Notification
这个知识点其实网上有很多教程的无非就是自己写一个Service继承NotificationListenerService,之后就可以重写