去掉ROOM 开机第一次提示全屏弹框
文章目录
- 需求
- 参考资料
- 修改文件
- 实现方案
- 解决思路
- grep 源码查找信息
- grep 查找 grep -rn "Viewing full screen" 找string 字段
- grep 查找 grep -rn immersive_cling_title 布局
- grep 查找 grep -rn layout.immersive_mode_cling 对应的UI 组件
- adb dumps + grep 源码查找信息
- 总结
需求
将全屏提示弹框去掉, 在进入到app 需要全屏的界面,系统会弹框一次。 需要去掉,影响体验。
显示的全屏提醒如下:
参考资料
Android 10.0 去掉目前处于全屏模式的提示框
修改文件
frameworks/base/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
实现方案
Android12 和 Android13 修改思想一样,方法具体内容不一样,如下:
handleShow 方法,屏蔽加入到windows 步骤:具体如下
Android12 private void handleShow(int rootDisplayAreaId) {if (DEBUG) Slog.d(TAG, "Showing immersive mode confirmation");mClingWindow = new ClingWindowView(mContext, mConfirm);// show the confirmationWindowManager.LayoutParams lp = getClingWindowLayoutParams();// getWindowManager(rootDisplayAreaId).addView(mClingWindow, lp);}Android13private void handleShow(int rootDisplayAreaId) {if (DEBUG) Slog.d(TAG, "Showing immersive mode confirmation");mClingWindow = new ClingWindowView(mContext, mConfirm);// show the confirmationWindowManager.LayoutParams lp = getClingWindowLayoutParams();try {// getWindowManager(rootDisplayAreaId).addView(mClingWindow, lp);} catch (WindowManager.InvalidDisplayException e) {Slog.w(TAG, "Fail to show the immersive confirmation window because of " + e);}}
解决思路
自己总结,一般修改界面性问题,无外乎两种方案:
- grep 源码查找相关信息
- adb 查看相关信息
grep 源码查找信息
grep 查找 grep -rn “Viewing full screen” 找string 字段
grep 查找 grep -rn immersive_cling_title 布局
grep 查找 grep -rn layout.immersive_mode_cling 对应的UI 组件
这里就通过关键信息,在源码里面找到关联的View 组件类 ImmersiveModeConfirmation
adb dumps + grep 源码查找信息
通过 dumpsys 查看当前focus 焦点的界面
1|k69v1_64_k419:/ $ dumpsys window | grep mCurrentFocusmCurrentFocus=Window{1d6e746 u0 ImmersiveModeConfirmation}
这里找到了 ImmersiveModeConfirmation,源码搜索下
R730:~/Android2/mt6769-alps-release-s0.mp1.rc/alps-release-s0.mp1.rc$ find . -name ImmersiveModeConfirmation.java
./frameworks/base/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
就找到了 这个 ImmersiveModeConfirmation.java 类的位置
总结
- 一个简单的需求,知道修改方案,解决方法最重要