近期在開發一款 Android App,需求是應用顯示時屏蔽 Home 鍵與下拉狀態欄。查閱資料發現似乎需要修改 framework/java 層的代碼,這屬於底層系統代碼,作為上層應用開發者是否可以直接修改?修改後又該如何應用到項目中?
Framework 層代碼僅由手機廠商掌控。 即使你只想修改自有手機的 Framework,也必須獲取該廠商的系統源代碼。直接使用 AOSP(原生 Android 源碼)編譯出的 JAR 包推送到手機上,極大概率會導致各種 Force Close(FC)崩潰。因為各大廠商(如三星、小米、華為等)都對 Framework 進行了深度定制,原生源碼編譯的產物與廠商系統不兼容。
Screen Pinning(螢幕釘選)與 Lock Task Mode(鎖任務模式),可在不修改系統層的前提下實現單應用全屏、禁止退出的效果。SYSTEM_UI_FLAG_FULLSCREEN 等標誌隱藏狀態欄與導航欄,配合 onWindowFocusChanged 重新應用標誌,可達到視覺上「屏蔽」的目的。上層 App 開發者不能直接修改 Framework 層代碼。請根據實際業務場景,選擇上述官方提供的 API 方案,這才是正規、可維護且跨設備兼容的做法。