修改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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ac测评题库_acwing算法基础

    ac测评题库_acwing算法基础幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候, 老师需要满足小朋友们的 K 个要求。幼儿园的糖果总是有限的,老师想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。输入格式输入的第一行是两个整数 N,K。接下来 K 行,表示分配糖果时需要满足的关系,每行 3 个数字 X,A,B。如果 X=1.表示第 A 个小

    2022年8月9日
    4
  • leveldb介绍「建议收藏」

    网上有很多关于leveldb的介绍文章,还不如直接看官方文档,直接上文档,希望自己以后有空翻译成中文版本。leveldbJeffDean,SanjayGhemawatTheleveldblibraryprovidesapersistentkeyvaluestore.Keysandvaluesarearbitrarybytearrays.Theke…

    2022年4月6日
    61
  • 写给大忙人看的 – Java中上传文件MinIO服务器(2)

    写给大忙人看的 – Java中上传文件MinIO服务器(2)上一篇写给大忙人看的-搭建文件服务器MinIO(一),我们已经成功地搭建了MinIO文件服务器,这一篇讲解在Java中如何上传文件至MinIO一、开发前戏1、项目中引入maven依赖<!–minio相关依赖–><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version

    2022年6月1日
    58
  • 信贷风控模型开发—-模型简介

    信贷风控模型开发—-模型简介第一章风控模型简介1.1为什么要建模1.2什么是信用评分1.3常用的模型1.4概念解析:M0,M1,M2的定义下一章预告参考文献第一章风控模型简介本系列文章为笔者对信贷风控领域建模的一些学习研究心得汇总,以及一些代码示例,尽量会将信贷风控领域的一些基本概念阐述明白。1.1为什么要建模金融的所有业务,几乎都是和风险打…

    2022年6月5日
    34
  • 【转载】C#之C#、.NET Framework、CLR的关系

    【转载】C#之C#、.NET Framework、CLR的关系

    2021年11月20日
    295
  • Python的正则表达式_python正则表达式例子

    Python的正则表达式_python正则表达式例子nlp任务中,正则表达式是一个很好的工具。推荐资源:https://github.com/ziishaned/learn-regex/https://regex101.com/在线练习结合网上的教程,我的整理如下:先来举个例子:#解析网页HTML<html><body><h1>helloworld&…

    2022年9月16日
    2

发表回复

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

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