通过反射获取NavigationBarView.java的“指针”

通过反射获取NavigationBarView.java的“指针”,第1张

概述我试图在使用旧Android *** 作系统的嵌入式系统的导航栏上以编程方式更改一些内容.我缩小到处理下面导航栏的班级.https://android.googlesource.com/platform/frameworks/base/+/7d8abae/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java该对象

我试图在使用旧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行

私有NavigationbarVIEw mNavigationbarVIEw = null;

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

        VIEw decorVIEw = getwindow().getDecorVIEw();        int uiOptions = VIEw.SYstem_UI_FLAG_HIDE_NAVIGATION | VIEw.SYstem_UI_FLAG_IMMERSIVE_STICKY;        decorVIEw.setsystemUIVisibility(uiOptions);

然而,这还不够.我想深入到navbar drawables.

任何线索都非常感谢.

谢谢.

附:由于它是一个嵌入式系统,所以如果我改变 *** 作系统是好的,因为它永远不会在谷歌商店.

解决方法:

通过反射无法在Phonestatusbar中获取mNavigationbarVIEw对象.
这个对象生活在进程com.androID.systemUI中,你自己的进程无法使用反射访问另一个进程的对象.

一种可能的方法是使用Xposed框架.通过Phonestatusbar方法中的一些挂钩,您可以访问mNavigationbarVIEw对象.

已经有一些模块可以修改navigationbar,例如:Xperia/AOSP NavBar Buttons .您可以按照本教程modify SystemUI’s clock style using Xposed framework进行 *** 作.

总结

以上是内存溢出为你收集整理的通过反射获取NavigationBarView.java的“指针”全部内容,希望文章能够帮你解决通过反射获取NavigationBarView.java的“指针”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1117397.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存