gpt4 book ai didi

java - 通过反射获取 NavigationBarView.java 的 "pointer"

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:59 24 4
gpt4 key购买 nike

我正在尝试以编程方式更改使用旧版 Android 操作系统的嵌入式系统导航栏上的一些内容。我缩小到处理下面导航栏的类。

https://android.googlesource.com/platform/frameworks/base/+/7d8abae/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java

对象似乎是在这里声明的:

https://android.googlesource.com/platform/frameworks/base/+/598a7aedfb6b77fc98bace9f420968a6f3ed637e/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

第 238 行

private NavigationBarView mNavigationBarView = null;

有没有办法以编程方式获取指向该对象的指针?我唯一能找到的就是获取更大容器的代码,就像您以编程方式隐藏导航栏一样。

        View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);

然而,这还不够。我想深入了解导航栏可绘制对象。

非常感谢任何线索。

谢谢。

附言因为它是一个嵌入式系统,所以如果我更改操作系统也没关系,因为它永远不会出现在 Google 商店中。

最佳答案

无法通过反射获取PhoneStatusBar 中的mNavigationBarView 对象。此对象存在于进程 com.android.systemui 中,您自己的进程无法使用反射访问另一个进程的对象。

一种可能的方法是使用Xposed框架。通过 PhoneStatusBar 方法中的一些 Hook ,您可以访问 mNavigationBarView 对象。

已经有一些修改navigationBar的模块,eg:Xperia/AOSP NavBar Buttons .您可以按照本教程进行操作 modify SystemUI's clock style using Xposed framework .

关于java - 通过反射获取 NavigationBarView.java 的 "pointer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com