Android11.0隐藏状态栏及导航栏
隐藏状态栏及导航栏
本文描述Android11系统设置-显示中添加隐藏状态栏及导航栏开关及功能实现。
添加全局状态保存配置
在M(Android5.0)版本之前,SettingsProvider中系统设置是存储在settings.db数据库中;但是在L(Android6.0)之后,SettingsProvider中系统设置改为由xml存储在data分区,路径为 /data/system/users/0/:
settings_global.xml
settings_secure.xml
settings_system.xml
- Settings中添加全局变量,修改路径 /frameworks/base/core/java/android/provider/Settings.java;
public static final class Global extends NameValueTable{
//********省略代码******
/**
* Hide Navigation.
*
* @hide
*/
public static final String HIDE_NAVIGATION = "hide_navigation";
/**
* Hide StatusBar.
*
* @hide
*/
public static final String HIDE_STATUSBAR = "hide_statusbar";
//********省略代码******
}
- 添加开关默认值,修改路径 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml;
<resources>
//********省略代码******
<integer name="def_hide_navigation">0</integer>
<integer name="def_hide_statusbar">0</integer>
//********省略代码******
</resources>
- 添加proto,修改路径 /frameworks/base/core/proto/android/providers/settings/global.proto;
//********省略代码******
message Display {
//********省略代码******
optional SettingProto hide_navigation_on = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto hide_statusbar_on = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
//********省略代码******
- 开关默认值加载,修改路径 /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java;
//********省略代码******
private void loadGlobalSettings(SQLiteDatabase db){
loadIntegerSetting(stmt, Settings.Global.HIDE_NAVIGATION, R.integer.def_hide_navigation);
loadIntegerSetting(stmt, Settings.Global.HIDE_STATUSBAR, R.integer.def_hide_statusbar);
}
//********省略代码******
- 修改路径 /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java;
//********省略代码******
final long displayToken = p.start(GlobalSettingsProto.DISPLAY);
//********省略代码******
dumpSetting(s, p,
Settings.Global.HIDE_NAVIGATION,
GlobalSettingsProto.Display.HIDE_NAVIGATION_ON);
dumpSetting(s, p,
Settings.Global.HIDE_STATUSBAR,
GlobalSettingsProto.Display.HIDE_STATUSBAR_ON);
p.end(displayToken);
//********省略代码******
设备-显示中添加隐藏状态栏及隐藏导航栏开关
- 定义开关名称文字 修改路径 /packages/app/Settings/res/values/strings.xml
//********省略代码******
<string name

本文详细介绍了在Android11.0系统中如何在设置中添加隐藏状态栏和导航栏的开关,包括设置全局变量、修改默认值、使用广播机制以及在SystemUI中处理相关操作,确保了暗色模式下的可见性。
最低0.47元/天 解锁文章
1299





