Android7.0 Settings主菜单添加一条item
来源:互联网 发布:nero mac os 破解版 编辑:程序博客网 时间:2024/04/29 19:38
往Android7.0的settings的主菜单里添加一条item. N与M的Settings不同,在M上只要找到Settings里面的相应的布局添加就好,但在N上由于Setting里面的item不再受布局控制,所以得在代码中添加.
找到/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
在settingsActivity.java里面的private void doUpdateTilesList() {}添加代码才会显示在Settings的item里面,具体如下:
private void doUpdateTilesList() {//add startsetTileEnabled(new ComponentName(packageName,Settings.WtkSecurityLockersActivity.class.getName()),getResources().getBoolean(R.bool.show_security_lock), isAdmin, pm);//add end}
- 1
- 2
- 3
- 4
- 5
- 6
这里添加了这段代码之后就可以显示在settings的item里面了,具体还有以下的一些完善:在SettingsActivity.java里面的
private String[] SETTINGS_FOR_RESTRICTED = {//add startSettings.WtkSecurityLockersActivity.class.getName(),//add end };private static final String[] ENTRY_FRAGMENTS = {//add startWtkSecurityLockers.class.getName(),//add end };packages/apps/Settings/src/com/android/settings/Settings.java里面加public static class WtkSecurityLockersActivity extends SettingsActivity { /* empty */ }packages/apps/Settings/AndroidManifest.xml里面加:<!--add (start)--> <!-- A: WtkSecurityLockers Settings --> <activity android:name="Settings$WtkSecurityLockersActivity" android:label="@string/security_locker" android:icon="@drawable/ic_wtk_securitylocker"> <intent-filter android:priority="4"> <action android:name="com.android.settings.action.SETTINGS" /> </intent-filter> <meta-data android:name="com.android.settings.category" android:value="com.android.settings.category.system" /> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.WtkSecurityLockers" /> <meta-data android:name="com.android.settings.title" android:resource="@string/security_locker" /> <meta-data android:name="com.android.settings.icon" android:resource="@drawable/ic_wtk_securitylocker" /> </activity> <!-- A: WtkSecurityLockers Settings --> <!--add (end)-->packages/apps/Settings/src/com/android/settings/下面添加一个类:package com.android.settings;import com.android.settings.R;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.support.v7.preference.Preference;import android.support.v7.preference.PreferenceScreen;import android.support.v14.preference.SwitchPreference;import android.util.Log;import android.os.SystemProperties;import android.provider.Settings;import com.android.internal.logging.MetricsProto.MetricsEvent;public class WtkSecurityLockers extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener{ private static final String KEY_SECURITY_LOCKER = "security_lockers"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e("lcg","KEY_SECURITY_LOCKER = "+KEY_SECURITY_LOCKER); Intent intent = new Intent().setClassName("com.wtk.wtksecuritylocker", "com.wtk.wtksecuritylocker.LockerListActivity"); intent.putExtra(KEY_SECURITY_LOCKER,true); startActivity(intent); getActivity().finish(); } @Override public void onResume() { super.onResume(); } @Override public boolean onPreferenceClick(Preference preference) { // TODO Auto-generated method stub return false; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { // TODO Auto-generated method stub return false; } @Override public boolean onPreferenceTreeClick(Preference preference) { // TODO Auto-generated method stub return super.onPreferenceTreeClick(preference); } @Override protected int getMetricsCategory() { // TODO Auto-generated method stub return MetricsEvent.DEVICEINFO_STORAGE; }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
至此就可以在Settings里面的主菜单界面添加一个item,点击该item就会进入我们想进的界面.
附上:packages/apps/Settings/src/com/android/settings/SettingsActivity.java
private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin, PackageManager pm) { if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName()) && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, component.getClassName())) { enabled = false; } setTileEnabled(component, enabled); }frameworks\base\packages\SettingsLib\src\com\android\settingslib\drawer\SettingsDrawerActivity.java里面public void setTileEnabled(ComponentName component, boolean enabled) { PackageManager pm = getPackageManager(); int state = pm.getComponentEnabledSetting(component); boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;if (isEnabled != enabled || state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { if (enabled) { sTileBlacklist.remove(component); } else { sTileBlacklist.add(component); } pm.setComponentEnabledSetting(component, enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); new CategoriesUpdater().execute(); } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
由此可见往Android7.0的Settingsk里添加item不需要布局,至于为什么,还有待继续研究.
阅读全文
0 0
- Android7.0 Settings主菜单添加一条item
- Android7.0 Settings主菜单添加一条item
- Android7.0 添加快速设定Quick Settings Tile
- android7.0 settings问题汇总
- DISCUZ后台添加主菜单的方法
- Android7.0 & 8.0 Language Settings 定制
- Android7.0 Settings 源码剖析-系列列表
- Android7.0 & 8.0 Language Settings 定制
- Android7.0 Settings 源码剖析一——Settings概括
- 如何在ie主菜单里添加顶部菜单项
- Drupal7如何将分类添加到主菜单
- Gnome desktop主菜单中添加自己的菜单栏
- MFC : 给主菜单动态添加删除一级子菜单
- Android7.0 添加自定义SystemService
- Android7.0 添加新字体
- 创建主菜单系统
- 扩展Delphi主菜单
- Fiddler2 主菜单
- linux后台运行和关闭、查看后台任务
- 【SpringMVC】基础知识总结
- 如何把代码上传到github
- android 签字版
- leetcode[Ugly Number]//待整理多种解法
- Android7.0 Settings主菜单添加一条item
- SpringBoot velocity 模板配置绝对路径的资源路径
- Android全套动画使用技巧
- 1299: 排列
- js判断浏览器环境
- 糊糊的前端学习笔记——浏览器对象【Day08】
- ios 实现控件右上角添加小红点
- 单例模式造成的内存泄露
- 《javascript从入门到精通》第二篇 javascript核心技术