通过反射获取NavigationBarView.java的“指针”
作者:互联网
我试图在使用旧Android操作系统的嵌入式系统的导航栏上以编程方式更改一些内容.我缩小到处理下面导航栏的班级.
该对象似乎在这里声明:
第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进行操作.
标签:java,android,reflection,navigationbar 来源: https://codeday.me/bug/20190705/1391135.html