0

在我的應用程序中,我使用BroadcastReceiver來接聽來電。所以當有人打電話時,如果我的電話號碼存儲在應用程序的數據庫中,我會顯示一個窗口,其中包含調用者的姓名。WindowManager不能總是在頂部

問題是,在某些設備中,如果在電話響鈴之前設備的屏幕處於關閉狀態,則不會顯示此窗口(如果設備的屏幕處於打開狀態,則電話鈴響時顯示窗口)。 我也推遲了3秒的窗口繪製,但這似乎不起作用。

要顯示窗口我使用以下代碼,其中mViewRelativeLayoutTextView。此代碼在Service中運行。

WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.MATCH_PARENT, 
      dpToPx(72), 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
      PixelFormat.TRANSLUCENT); 

mParams.gravity = Gravity.TOP; 
WindowManager mWindowManager = (WindowManager)getSystemService(WINDOW_SERVICE); 
mWindowManager.addView(mView, mParams); 

回答

0

經過幾次失敗的嘗試,我發現它。

我必須用TYPE_SYSTEM_OVERLAY替換國旗TYPE_PHONE