[英]Accessibility app for android that runs on top of all other applications and can intervene and send touch/tap events to views of other apps
[英]Android app that runs on top of ALL other apps?
在今天之前我會說這是不可能的,讓一個應用程序覆蓋在其他一切之上:主屏幕,應用程序,撥號器等。
如果您嘗試免費應用程序“超級經理”,它就是這樣做的。 它有一個圖標和小部件像屏幕,將始終和任何地方顯示。 當圖標或小部件在屏幕上時,您仍然可以與在其后面運行的應用程序進行交互。
這怎么可能,我們如何重新創建這個功能?
更新:這是一些實際的圖像。 您可以看到疊加的應用程序作為Dolphin頂部的小箭頭運行。 然后當你按它時,你可以看到應用程序作為一個大小部件運行。 即使在窗口小部件啟動時,您仍然可以與后台應用程序進行交互。 在此示例中,dolphin是后台應用程序。
從Android 4.x開始,Android團隊Android團隊通過添加新函數adjustWindowParamsLw()修復了潛在的安全問題,其中它將為TYPE_SYSTEM_OVERLAY窗口添加FLAG_NOT_FOCUSABLE,FLAG_NOT_TOUCHABLE和刪除FLAG_WATCH_OUTSIDE_TOUCH標志。
那個TYPE_SYSTEM_OVERLAY窗口不會在ICS平台上收到任何觸摸事件,當然,使用TYPE_SYSTEM_OVERLAY在ICS或未來的設備上是不可行的。
更新:2016/5/4 TYPE_TOAST無法在Android 4.0~4.3上接收觸摸事件。 它與TYPE_SYSTEM_OVERLAY相同。 在Android 4.4及更高版本中,TYPE_TOAST已從排除列表中刪除,因此您還可以使用TYPE_TOAST在Android 4.4+設備上接收觸摸事件。
這可以通過組合來完成。 初始按鈕是通過創建TYPE_SYSTEM_OVERLAY類型的窗口完成的。 這些窗口無法獲得焦點,但是您可以使用FLAG_WATCH_OUTSIDE_TOUCH來獲取觸摸事件並匹配坐標以實現您已被觸摸。
類似地,有http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_SYSTEM_ALERT (和TYPE_SYSTEM_DIALOG)。
最后,可以使用http://developer.android.com/reference/android/R.style.html#Theme_Translucent (或變體)創建活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.