android修改settings源码隐藏部分布局

隐藏部分不需要的布局不需要去settings_headers.xml里去掉布局。这样会报异常。

我们在settings.java文件的updateHeaderList(List<Header> target) 方法里修改即可。

找到对应的id,把不需要的都移除掉。


private void updateHeaderList(List<Header> target) {
        final boolean showDev = mDevelopmentPreferences.getBoolean(
                DevelopmentSettings.PREF_SHOW,
                android.os.Build.TYPE.equals("eng"));
        int i = 0;


        mHeaderIndexMap.clear();
        while (i < target.size()) {
        Header header = target.get(i);
       // Ids are integers, so downcasting
       int id = (int) header.id;
     //start modify by longqiong on 2014.12.08
       if (id == R.id.operator_settings || id == R.id.manufacturer_settings) {
           Utils.updateHeaderToSpecificActivityFromMetaDataOrRemove(this, target, header);
       } else if (id == R.id.wifi_settings) {
           // Remove WiFi Settings if WiFi service is not available.
           if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)) {
               target.remove(i);
           }
       } else if (id == R.id.bluetooth_settings) {
           // Remove Bluetooth Settings if Bluetooth service is not available.
               target.remove(i);
       } else if (id == R.id.data_usage_settings) {
           // Remove data usage when kernel module not enabled
              target.remove(i);
       } else if (id == R.id.battery_settings) {
           // Remove battery settings when battery is not available. (e.g. TV)
               target.remove(i);
       } else if (id == R.id.account_settings) {
        target.remove(i);
       } else if (id == R.id.home_settings) {
               target.remove(i);
       } else if (id == R.id.user_settings) {
               target.remove(i);
       } else if (id == R.id.nfc_payment_settings) {
               target.remove(i);
       } else if (id == R.id.development_settings) {
               target.remove(i);
       } else if (id == R.id.account_add) {
               target.remove(i);
       } else if(id == R.id.print_settings){
        target.remove(i);
       }
       if (i < target.size() && target.get(i) == header
               && UserHandle.MU_ENABLED && UserHandle.myUserId() != 0
               && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
           target.remove(i);
       }
       if(i < target.size()){
           if(id == R.id.wireless_section 
            ||  id == R.id.bluetooth_settings
            ||  id == R.id.data_usage_settings
            ||  id == R.id.operator_settings
            ||  id == R.id.device_section
            ||  id == R.id.storage_settings
            ||  id == R.id.battery_settings
            ||  id == R.id.user_settings
            ){
            Log.e("long", "title = " + target.get(i).getTitle(getResources()));
            target.remove(i);
           }
       }
       //end modify by longqiong  
       // Increment if the current one wasn't removed by the Utils code.
       if (i < target.size() && target.get(i) == header) {
       
           // Hold on to the first header, when we need to reset to the top-level
           if (mFirstHeader == null &&
                   HeaderAdapter.getHeaderType(header) != HeaderAdapter.HEADER_TYPE_CATEGORY) {
               mFirstHeader = header;
           }
           mHeaderIndexMap.put(id, i);
           i++;
       }
        }
    }


发布了23 篇原创文章 · 获赞 11 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u014095878/article/details/41826183