修改SystemUI反编译的smali实现隐藏导航栏「建议收藏」

修改SystemUI反编译的smali实现隐藏导航栏「建议收藏」记录


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在system/build.prop中加qemu.hw.mainkeys=1也可以让导航栏不出来。

在反编译输出目录中com/android/systemui/statusbar/phone/PhoneStatusBar.smali控制导航栏.

s实际操作的是 xt1092 android6.0 的SystemUI.apk
下面代码里面的寄存器编号不同的包反编译出来会有不同,但是源码的逻辑应该是一样的。

1、找到makeStatusBarView方法
z在这行:

.method protected makeStatusBarView()Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

2、在这个方法里面找到showNav变量
showNav的赋值语句:

    iget-object v4, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mWindowManagerService:Landroid/view/IWindowManager;

    invoke-interface {v4}, Landroid/view/IWindowManager;->hasNavigationBar()Z

    move-result v27

d对应源码里面的代码:

        try {
            boolean showNav = mWindowManagerService.hasNavigationBar();
            showNav = false;
            if (DEBUG) Log.v(TAG, "hasNavigationBar=" + showNav);
            if (showNav) {
                mNavigationBarView =
                    (NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);

                mNavigationBarView.setDisabledFlags(mDisabled1);
                mNavigationBarView.setBar(this);
                mNavigationBarView.setOnVerticalChangedListener(
                        new NavigationBarView.OnVerticalChangedListener() {
                    @Override
                    public void onVerticalChanged(boolean isVertical) {
                        if (mAssistManager != null) {
                            mAssistManager.onConfigurationChanged();
                        }
                        mNotificationPanel.setQsScrimEnabled(!isVertical);
                    }
                });
                mNavigationBarView.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        checkUserAutohide(v, event);
                        return false;
                    }});
            }
        } catch (RemoteException ex) {
            // no window manager? good luck with that
        }

3、修改代码
a看名字感觉showNav就是控制导航栏的显示的,所以在判断showNav的if语句之前将showNav设为false应该就可以了。

u所以在上面的赋值语句后加入下面代码,要注意寄存器号

    .local v27, "showNav":Z
    const/16 v27, 0x0

f反编译回去, 发现达到目的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192630.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 计算机组成原理相关话题,计算机组成原理基本的知识点.doc

    计算机组成原理相关话题,计算机组成原理基本的知识点.doc

    2021年11月27日
  • foreach遍历list删除元素一定会报错?

    list集合平常自以为用的非常熟了,原来只是用add()方法熟练而已,碰到remove一报错就彻底暴露了自己的短板啦。来,给list集合删除某些元素,先上一段代码:   1)报错啦   Listlist=newArrayList();list.add(“1”);list.add(“2”);list.add(“3”)

    2022年4月6日
  • 5g的控制信道编码方式_5gnr上行支持的信道编码

    5g的控制信道编码方式_5gnr上行支持的信道编码第1章物理层架构1.1物理层内部功能协议栈1.2物理层编码与处理过程(1)信道编码(2)调制解调(3)层映射(4)扩频预编码(仅仅用于上行,可选)(5)多天线技术的预编码(6)资源映射(7)OFDM变换本文主要探讨NR的信道编码技术第2章NR的物理层信道编码技术概述物理层信道编码不是单一的编码,而是有一组编码组成。以发送为例,阐述物理层信道编码的过程以及其中涉及到的主要,接收过程与之相反。(1)TrBloc……

    2022年10月29日
  • settings官方网站_phpstorm中文

    settings官方网站_phpstorm中文setting —> php,选择php版本,并点击…,选择到php.exe进入到appserv底下找到php.ini文件,查找date.timezone,去掉前面的;号,添加”Asia/Shanghai”重启appserv环境,就是重启下apache 和 mysql服务发现依然失败后面重启电脑就可以了哈哈哈哈哈哈哈哈…

    2022年8月18日
  • 视频直播技术详解之采集[通俗易懂]

    视频直播技术详解之采集[通俗易懂]声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载。作者:七牛云责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基…

    2022年7月24日
  • oracle数据库connectionstring,oracle数据库 connectionstring

    oracle数据库connectionstring,oracle数据库 connectionstringC#Oracle连接与修改1、连接Oracle,并可以将数据库的数据显示在GridControl上stringConnectionString=”DataSource=数据库名;UserId=用户名;Password=密码;IntegratedSecurity=no;”;Oracle…文章衣舞晨风2014-01-08884浏览量C#Oracle连接与修改1、连接Oracl…

    2022年7月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号