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

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

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

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


相关推荐

  • 怎么给iOS项目打包

    怎么给iOS项目打包

    2022年1月31日
    39
  • 区块链工程师需要掌握哪些技能?

    作者:Annchain(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。) 从2017年开始,区块链逐步成为互联网的风口浪尖。曝光度的激增带来了人才市场的火爆。 区块链所要求的知识并非什么特殊的或者新兴的知识,除了密码学领域的知识需要专门了解之外,其他知识和技能几乎都是一些比较通用的网络开发核心知识。 由于区块链行业涉及到的范…

    2022年4月5日
    55
  • 怎么用python3画烟花?代码是什么?[通俗易懂]

    怎么用python3画烟花?代码是什么?[通俗易懂]我们可以用python做很多好玩的事情哦~包括制作动态的视频,之前小编就教大写编写过制作内容,现在给大家想到了更好玩的事情,就是编写个烟花代码出来,有兴趣的小伙伴可以看下呢~实施步骤:一、导入海龟

    2022年7月5日
    41
  • 优秀博客汇总

    优秀博客汇总github爬取android优秀项目的网站https://android-arsenal.com/张涛-开源实验室http://www.kymjs.com/任玉刚(android开发与艺术探

    2022年7月2日
    30
  • 一对兔子从出生后第三个月起每个月_兔子繁衍问题python

    一对兔子从出生后第三个月起每个月_兔子繁衍问题python7-6 兔子繁衍问题 (20分)一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式: 输入在一行中给出一个不超过10000的正整数N。输出格式: 在一行中输出兔子总数达到N最少需要的月数。 输入样例: 30 输出样例: 9#includ…

    2022年8月18日
    9
  • form factor_perform和performance的区别和用法

    form factor_perform和performance的区别和用法performSelector:withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以这也是runtime的一种应用方式。performSelector和直接调用方法的区别就在与runtime。直接调用编译是会自动校验。如果方法不存在,那么直接调用在编译时候就能够发现,编译器会直接报错。但是使用performSelec…

    2025年8月2日
    3

发表回复

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

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