0
在我的應用程序中,我使用BroadcastReceiver
來接聽來電。所以當有人打電話時,如果我的電話號碼存儲在應用程序的數據庫中,我會顯示一個窗口,其中包含調用者的姓名。WindowManager不能總是在頂部
問題是,在某些設備中,如果在電話響鈴之前設備的屏幕處於關閉狀態,則不會顯示此窗口(如果設備的屏幕處於打開狀態,則電話鈴響時顯示窗口)。 我也推遲了3秒的窗口繪製,但這似乎不起作用。
要顯示窗口我使用以下代碼,其中mView
是RelativeLayout
與TextView
。此代碼在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);