1. 程式人生 > >Android 下隱藏虛擬導航欄的方法,不需要root,需要的時候調出,彈dialog不會閃現

Android 下隱藏虛擬導航欄的方法,不需要root,需要的時候調出,彈dialog不會閃現

    相信做安卓開發的人員對虛擬導航欄都有著特殊的經歷,在沒有root的情況下,如果隱藏它?

    有的時候我們需要這樣一個場景,它會自動隱藏,不論我點選螢幕,或者彈出dialog,都不希望它彈出來,只有我需要用的,手指上劃顯示即可,不需要的時候永遠不要出來。

    筆者也在網上搜索了好多文章,大多數都是設定windows的flag,然後監聽,只要出現虛擬導航欄,就隱藏,這樣大多數場景都可以,但是有時候需要彈出dialog,,這時候虛擬導航欄肯定會出來,然後消失,出現閃現的情況。

    筆者通過搜很多文章,重要找到了一個方法,不需要root,只有使用者呼叫的時候,才會出來,其它時候不論怎麼搞都不會出來,在Android5.1和Android6.0上親測有效。其主要原理是寫settings資料庫。

    這是隻隱藏狀態列的命令

settings put global policy_control immersive.status=*

    這是隻隱藏虛擬導航欄的命令:

settings put global policy_control immersive.navigation=*

    這是同時隱藏狀態列和虛擬導航欄的命令:

settings put global policy_control immersive.full=*

   上面的命令類似於用flag設定windows時候的全屏標誌

   可以看到,他的本質就是寫settings資料庫中的global表

    如果想恢復原來的樣子,只要將對應的欄位置空即可,比如:

settings put global policy_control immersive.full=

    這是我在xda論壇找到的方法,原文連結:https://forum.xda-developers.com/pixel-xl/themes/how-to-enable-true-immersive-modes-t3554299

    希望對大家有幫助,這個問題困擾了我很久。