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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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反编译回去, 发现达到目的

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 文本分类算法的效果[通俗易懂]

    文本分类算法的效果[通俗易懂]基于统计的分类算法是主流,主要包括以下几种分类模型:相似度模型(Rocchio、K-近邻)、概率模型(贝叶斯)、线性模型(LLSF、SVM)、非线性模型(决策树、神经网络)、组合模型。对于这些分类算法,国内外很多研究者进行了客观评测(Yang,1999;Joachims,1998;He,2000;Tsay,2000;庞剑锋,2001;王灏,2003;李保利,2003;周雪忠,

  • HTML5学习笔记简明版(11):新API

    HTML5学习笔记简明版(11):新API

    2021年12月31日
  • phpstorm2021.5激活码[在线序列号]

    phpstorm2021.5激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • hashmap低层原理(js底层原理)

    数组:其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量彼此之间没有任何的关联。存储区间连续,占用内存严重,数组有下标,查询数据快,但是增删比较慢;链表:一种常见的基础数据结构,是一种线性表,但是不会按照线性的顺序存储数据,而是每一个节点里存到下一个节点的指针。存储区间离散,占用内存比较宽松,使用链表查询比较慢,但是增删比较快;哈希表:Hashtable既满足了数据的快速查询(…

  • python跟pycharm的区别_python与pycharm有何区别[通俗易懂]

    python跟pycharm的区别_python与pycharm有何区别[通俗易懂]Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。PyCharm是Python的专用IDE,地位类似于Java的IDEEclipse。功能齐全的集成开发环境同时提供收费版和免费版,即专业版和社区版。PyCharm是安装最快的IDE,且安装后的…

  • spi,i2c,uart三种总线的区别_i2c接口是什么意思

    spi,i2c,uart三种总线的区别_i2c接口是什么意思一、SPI I2CUART通信速率比较:SPI>I2C>UART1、同步通信>异步通信;2、同步通信时必须有一根时钟线连接传输的两端;3、都是串行通信方式,并行通信用于内部存储间的通信,如flash;4、适合传输的距离和通信速率成反比关系;3-SPI:两条合一的数据线、1时钟线、1CS(设备片选线) SPI:2数据线、1时钟线、1CS(设备片选线)/串行同步通信…

发表回复

您的电子邮箱地址不会被公开。

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