Android 7.1原生设置项删除

栏目: Android · 发布时间: 6年前

内容简介:从源码中看到Settings继承SettingsActivity,而SettingsActivity继承SettingsDrawerActivity,在SettingsDrawerActivity的onCreate方法中,我们看到调用了getDashboardCategories方法,代码:getDashboardCategories();//获取设置项列表setActionBar(toolbar);

从源码中看到Settings继承SettingsActivity,而SettingsActivity继承SettingsDrawerActivity,在SettingsDrawerActivity的onCreate方法中,我们看到调用了getDashboardCategories方法,代码:

getDashboardCategories();//获取设置项列表

setActionBar(toolbar);

mDrawerAdapter = new SettingsDrawerAdapter(this);

ListView listView = (ListView) findViewById(R.id.left_drawer);

listView.setAdapter(mDrawerAdapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

public void onItemClick(Android.widget.AdapterView<?> parent, View view, int position,

long id) {

onTileClicked(mDrawerAdapter.getTile(position));

}

});

跟进到该方法的具体实现:

public List<DashboardCategory> getDashboardCategories() {

if (sDashboardCategories == null) {

sTileCache = new HashMap<>();

sConfigTracker = new InterestingConfigChanges();

// Apply initial current config.

boolean newC =sConfigTracker.applyNewConfig(getResources());

Log.d(TAG, "newC = " + newC);

sDashboardCategories = TileUtils.getCategories(this, sTileCache);//重点在这里

}

return sDashboardCategories;

}

跟进到getCategories方法:

private static final String EXTRA_SETTINGS_ACTION =

"com.android.settings.action.EXTRA_SETTINGS";

/**

* Same as #EXTRA_SETTINGS_ACTION but used for the platform Settings activities.

*/

private static final String SETTINGS_ACTION =

"com.android.settings.action.SETTINGS";

private static final String OPERATOR_SETTINGS =

"com.android.settings.OPERATOR_APPLICATION_SETTING";

private static final String OPERATOR_DEFAULT_CATEGORY =

"com.android.settings.category.wireless";

private static final String MANUFACTURER_SETTINGS =

"com.android.settings.MANUFACTURER_APPLICATION_SETTING";

private static final String MANUFACTURER_DEFAULT_CATEGORY =

"com.android.settings.category.device";

//以上是TileUtils.java定义的常量

public static List<DashboardCategory> getCategories(Context context,

HashMap<Pair<String, String>, Tile> cache) {

//......省略

for (UserHandle user : userManager.getUserProfiles()) {

// TODO: Needs much optimization, too many PM queries going on here.

if (user.getIdentifier() == ActivityManager.getCurrentUser()) {

// Only add Settings for this user.

getTilesForAction(context, user, SETTINGS_ACTION, cache, null, tiles, true);

getTilesForAction(context, user, OPERATOR_SETTINGS, cache,

OPERATOR_DEFAULT_CATEGORY, tiles, false);

getTilesForAction(context, user, MANUFACTURER_SETTINGS, cache,

MANUFACTURER_DEFAULT_CATEGORY, tiles, false);

}

if (setup) {

getTilesForAction(context, user, EXTRA_SETTINGS_ACTION, cache, null, tiles, false);

}

}

//......省略

return categories;

}

到这里我们就可以看得到,这是根据AndroidManifest.xml对activity及fragement的定义来划分设置项分类的。我们再看一下AndroidManifest.xml对各个activity及fragment的定义,拿个简单的来看看:

<activity android:name="Settings$AppMemoryUsageActivity"

android:label="@string/app_list_memory_use"

android:icon="@drawable/ic_settings_memory">

<intent-filter>

<action android:name="android.settings.APP_MEMORY_USAGE" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

<!-- <meta-data android:name="com.android.settings.category"

android:value="com.android.settings.category.device" /> -->

<meta-data android:name="com.android.settings.FRAGMENT_CLASS"

android:value="com.android.settings.applications.ProcessStatsUi" />

</activity>

这里我们只要前设置项分类去掉就能够删除掉这一设置项<meta-data android:name="com.android.settings.category" android:value="com.android.settings.category.device" />,同里如果我们要增加设置项,只要按不同的分类设置参数就行了。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-09/1544664.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

卓有成效的程序员

卓有成效的程序员

Neal Ford / 熊节 / 机械工业出版社 / 2009-3 / 45.00元

《卓有成效的程序员》就是讲述如何在开发软件的过程中变得更加高效。同时,《卓有成效的程序员》的讲述将会跨语言和操作系统:很多技巧的讲述都会伴随多种程序语言的例子,并且会跨越三种主要的操作系统,Windows(多个版本),Mac OS X以及 *-nix (Unix或者Linux)。 《卓有成效的程序员》讨论的是程序员个体的生产力,而不是团队的生产力问题,所以它不会涉及方法论(好吧,可能总会在......一起来看看 《卓有成效的程序员》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具