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

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();;            
            }
        });

从新编译系统即可。

你可能感兴趣的:(2018-10-12)