AOSP 11 CarSystemUI 如何监听任一 应用使用setStatusBarColor(Color.TRANSPARENT);
时间: 2024-03-20 14:44:13 浏览: 116
在 AOSP 11 中,CarSystemUI 可以通过 Hook 的方式监听任一应用使用 `setStatusBarColor(Color.TRANSPARENT)` 方法的调用,具体实现如下:
1. 在 CarSystemUI 中创建一个 Hook 类,继承自 `XServerHook`:
```
public class StatusBarColorHook extends XServerHook {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.hookAllMethods(Window.class, "setStatusBarColor", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
int color = (int) param.args[0];
if (color == Color.TRANSPARENT) {
String packageName = lpparam.packageName;
// 处理状态栏颜色变化
}
}
});
}
}
```
2. 在 CarSystemUI 的 `onCreate()` 方法中使用 `XServerHookManager` 注册 Hook:
```
XServerHookManager.getInstance().registerHook(new StatusBarColorHook());
```
3. 在 `afterHookedMethod()` 方法中,可以根据需要获取应用的包名,并进行状态栏颜色的处理。
注意:使用 Xposed 框架需要 Root 权限。
阅读全文