Android 7.1 系统Setting界面增加返回机制

本文介绍在Android系统中,当隐藏状态栏和虚拟按键后,在Setting界面无法使用无鼠标环境下的返回功能。通过修改SettingsActivity.java和SettingsDrawerActivity.java源码,使设备即使在全屏模式下也能正常返回桌面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android系统在设置了隐藏状态栏和虚拟按键之后,进入Setting界面,没有鼠标的话就无法返回了。这里我们通过修改源码,

实现返回到桌面的功能。具体代码路径如下:

packages\apps\Settings\src\com\android\settings\SettingsActivity.java

把源码

 if (!mIsShowingDashboard) {
                mDisplaySearch = false;
                // UP will be shown only if it is a sub settings
                if (mIsShortcut) {
                    mDisplayHomeAsUpEnabled = isSubSettings;
                } else if (isSubSettings) {
                    mDisplayHomeAsUpEnabled = true;
                } else {
                    mDisplayHomeAsUpEnabled = false;
                }
                setTitleFromIntent(intent);

                Bundle initialArguments = intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
                switchToFragment(initialFragmentName, initialArguments, true, false,
                        mInitialTitleResId, mInitialTitle, false);
            } else {
                // No UP affordance if we are displaying the main Dashboard
                mDisplayHomeAsUpEnabled = false;
                // Show Search affordance
                mDisplaySearch = true;
                mInitialTitleResId = R.string.dashboard_title;

                // add argument to indicate which settings tab should be initially selected
                final Bundle args = new Bundle();
                final String extraName = DashboardContainerFragment.EXTRA_SELECT_SETTINGS_TAB;
                args.putString(extraName, intent.getStringExtra(extraName));

                switchToFragment(DashboardContainerFragment.class.getName(), args, false, false,
                        mInitialTitleResId, mInitialTitle, false);
            }

   中的mDisplayHomeAsUpEnabled = false;修改为mDisplayHomeAsUpEnabled = true;即可实现。

   修改源码frameworks\base\packages\SettingsLib\src\com\android\settingslib\drawer\SettingsDrawerActivity.java

  在源码:

   mUserManager = UserManager.get(this);
        if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
                + " ms");

    后面加上如下代码:

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();;            
            }
        });

从新编译系统即可。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值