Вопрос

I can't seem to fix this weird keyguard problem.

Symptoms:

When I have a system overlay added, my keyguard is blank. I can however push buttons (PIN Lock and emergency call, etc) and even unlock my phone (thank god!).

Code:

Java

    viewHUD = new CustomView(getApplicationContext());

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.RIGHT | Gravity.TOP;
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    wm.addView(viewHUD, params);

Screenshots

1.Keyguard Open (what it usually looks like)

Keyguard Open

2.Buggy keyguard i.e. When I run this overlay app and press the power button twice (for the lock to engage)

Buggy keyguard

3. App Screen (Notice the Cyan text -- mA)

App Screen

4. Keyguard close/minimized

Keyguard close/minimized

Это было полезно?

Решение

Since no one answered, and I've found a solution, here it goes, this fixes the problem:

    viewToAdd.setBackgroundColor(Color.TRANSPARENT);

    // make the required params object for the HUD viewToAdd
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSPARENT);
    params.gravity = Gravity.RIGHT | Gravity.TOP;
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top