应用如何获取navigation bar(导航栏)的当前运行模式
Android 应用判断当前导航栏模式的方法
以下方法适配 Android 10 及以上系统版本,可准确识别三类主流导航栏模式:
核心判断逻辑
安卓系统会在系统安全设置存储区中记录当前使用的导航栏模式,我们可以直接读取该参数完成判断:
- 首先通过
ContentResolver读取Settings.Secure下的navigation_mode参数,代码示例(Kotlin):
enum class NavMode { THREE_BUTTON, TWO_BUTTON, GESTURE } fun getCurrentNavMode(context: Context): NavMode { val modeValue = Settings.Secure.getInt( context.contentResolver, "navigation_mode", 0 // 默认值为0,对应三键导航 ) return when(modeValue) { 0 -> NavMode.THREE_BUTTON 1 -> NavMode.TWO_BUTTON 2 -> NavMode.GESTURE else -> NavMode.THREE_BUTTON } }
- 参数值和模式的对应关系:
- 0:三键导航:包含返回、主页、多任务三个独立操作按键
- 1:两键导航:包含返回、主页两个操作按键,多任务通过上滑主页键触发
- 2:手势导航:无操作按键,所有系统导航操作通过滑动手势完成
兼容特殊场景
部分厂商定制 ROM 可能修改系统参数的存储键名,若读取
navigation_mode始终返回默认值,可额外读取nav_bar_interactive参数作为补充判断:该参数返回1时,当前为手势导航。
低版本兼容(Android 9 及以下)
Android 9 及更早版本仅支持三键和两键导航,可读取 config_navBarInteractionMode 参数判断,返回0为三键导航,返回1为两键导航。
内容的提问来源于stack exchange,提问作者Jater Chu
相关产品推荐
相关产品推荐

