溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發(fā)懸浮窗踩坑問題怎么解決

發(fā)布時間:2023-03-17 09:46:28 來源:億速云 閱讀:163 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Android開發(fā)懸浮窗踩坑問題怎么解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android開發(fā)懸浮窗踩坑問題怎么解決”吧!

1、懸浮窗中EditText無法獲得彈出鍵盤

主要是沒有明白下面兩個屬性的作用,在網(wǎng)上搜索之后直接設置了。

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE

設置FLAG_NOT_FOCUSABLE,懸浮窗外的點擊才有效,會把事件分發(fā)給懸浮窗底層的其他應用Activity。如果設置了FLAG_NOT_FOCUSABLE,那么屏幕上彈窗之外的地方能夠點擊、但是彈窗上的EditText鍵盤也不會彈出來。

此時懸浮窗外的事件是不會觸發(fā)懸浮窗內ViewonToucheEvent函數(shù),可以通過添加WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH標志位,但無法攔截事件。

WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

屏幕上彈窗之外的地方能夠點擊、彈窗上的EditText也可以輸入、鍵盤能夠彈出來。

所以根據(jù)業(yè)務需要,我只需要添加WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL標志位即可。

2、懸浮窗無法錄音

通過Activity調起Service,然后在Service通過WindowManager進行添加懸浮窗。在進行沒有任何操作,可以正常調起科大訊飛進行錄音。

問題點一:同事為了解決我還沒來得及修復的windowManger.removeView改成exitProcess問題,強行各種修改,最終還調用了activityfinish函數(shù),把activity干掉。最終導致無法調起科大訊飛的語音識別。總是報錄音權限問題,找不到任何的問題點,最后代碼回退,定位到Activity被干掉,同事也承認他的愚蠢行為。

問題點二:在進行一些操作,例如授權跳轉到設置之后,退出設置回到原先界面,調不錄音,還是權限。定位答應透明Activity的生命周期,發(fā)現(xiàn)onResume函數(shù)沒有被調用到,所以應用現(xiàn)在在后臺運行。

所以就一頓頓頓搜索,官方文檔: Android 9 對后臺運行的應用增加了權限限制。

Android開發(fā)懸浮窗踩坑問題怎么解決

解決方法:

  • 聲明為系統(tǒng)應用,沒問題。但我們想做通用軟件。

  • 增加前臺服務。實測沒效果。

  • 在2的基礎上,再添加一個屬性:android:foregroundServiceType="microphone"。完美。

<service android:name=".ui.service.AiService"
    android:foregroundServiceType="microphone"
    />

Android開發(fā)懸浮窗踩坑問題怎么解決

感謝各位的閱讀,以上就是“Android開發(fā)懸浮窗踩坑問題怎么解決”的內容了,經(jīng)過本文的學習后,相信大家對Android開發(fā)懸浮窗踩坑問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI