如何检测Android 9及以上版本引入的全屏手势操作
Android 9 全屏手势导航操作检测说明
你此前使用BroadcastReceiver监听ACTION_CLOSE_SYSTEM_DIALOGS广播、通过reason参数判断按键行为的方案,仅适用于传统物理按键、虚拟导航键的点击场景,无法捕获Android 9及以上版本全屏手势触发的Home、Recent(任务键)操作。
系统并未对外公开和SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"类似的、专门对应「滑动触发Home」「长按滑动触发Recent」的常量参数:全屏手势的逻辑全部在SystemUI系统进程内部处理,没有向三方应用开放直接监听的接口,也不会通过公开广播发送对应标识。
如果业务需要间接判断这类手势操作,仅可通过以下两种方案实现:
- 申请无障碍权限(
android.permission.BIND_ACCESSIBILITY_SERVICE),通过无障碍服务监听全局界面切换行为:当当前顶层应用变为桌面Launcher时,可间接判定Home类操作触发;当系统任务管理界面被拉起时,可间接判定Recent类操作触发 - 若你的应用为设备预安装的系统级应用,可自行修改SystemUI源码,在手势触发Home、Recent的逻辑节点新增自定义广播,对外发送你自定义的reason参数用于监听
注意:普通三方应用无法通过Android公开API直接捕获这两类手势操作,官方出于隐私和系统安全考虑,未开放这类系统导航行为的监听入口,也没有相关公开常量定义。
内容的提问来源于stack exchange,提问作者Endless River
相关产品推荐
相关产品推荐

