Xposed入门浅析(二)拦截通知栏消息

如何用Xposed拦截通知栏消息?

今天我将用xposed中的hook方法,在通知栏显示之前hook它,让它不显示,可以减少了很多通知烦恼。

Dalvik 孵化器 Zygote(Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育/fork出来的)进程对应的程序是/system/bin/app_process.

Xposed 框架中真正起作用的是对方法的 hook,所以我们要先找到通知栏显示的方法。

系统通知栏的类是"android.app.NotificationManager",我么可以查看这个类,发现里面有个“public void notify(intid,Notification notification)”方法,而再点进 Notification中,发现里面有tickerView、android.title
、android.text等,我先hook这个方法试下。

新建一个Test类,实现 IXposedHookLoadPackage接口,并实现他的handleLoadPackage
方法,我们先做下判断(只拦截QQ的消息)

```if(!loadPackageParam.packageName.equals("com.tencent.mobileqq")){

return;

}

```

接着调用findAndHookMethod, 去hook “notify”方法

finalClass clazz=XposedHelpers.findClass(

"android.app.NotificationManager",loadPackageParam.classLoader);

XposedHelpers.findAndHookMethod(clazz,

"notify",String.class, int.class,Notification.class, newXC_MethodHook(){}

findAndHookMethod里的参数是(类名, 方法名, 方法的参数.class,。。。(所有的参数都要写),newXC_MethodHook())

在里面实现beforeHookedMethod(拦截之前执行,after是之后执行),

param.setResult(null); //把honk到的值设为空(param是hook的方法中的参数的值)

Notification a = (Notification)param.args[2];

XposedBridge.log("loadpackage param"+ param.toString());

XposedBridge.log("loadpackage AlipayGphone  tickerText"+ a.tickerText);

XposedBridge.log("loadpackage AlipayGphone  title"+ a.extras.get("android.title"));

XposedBridge.log("loadpackage AlipayGphone  text"+ a.extras.get("android.text"));

打印 ticktext、title、text值。

给手机qq发消息,这是你虽受到了消息,但是却不会有通知提示,我们已经拦截并把通知栏显示的设为null。

Xposed入门浅析(二)拦截通知栏消息_第1张图片
打印信息

也可以通过判断 title 来拦截其他 应用的指定消息。

你可能感兴趣的:(Xposed入门浅析(二)拦截通知栏消息)