1

Ich brauche eine App Wide-Label, die Debugging-Modus anzeigt und wenn aktiviert aktiviert einen Fehlerbericht erstellt, wenn angezapft. Um es über jeder Aktivität zu haben, habe ich es zum Fenstermanager hinzugefügt. Funktioniert perfekt für die App. Eine Konfiguration wird jedoch durch ein Popup-Dialogfragment vorgenommen. Es scheint, dass sie aktiv sind, aber für den Benutzer nicht sichtbar sind. Ich habe mehrere Layout-Parameter-Flags ausprobiert, aber es hat nicht funktioniert. HierSystem-Overlay-Etikett blockiert DialogFragment

ist der Code für das Hinzufügen des Fensters:

final int LayoutParamFlags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 
params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, 
       LayoutParamFlags, 
       PixelFormat.TRANSLUCENT); 
params.gravity = Gravity.TOP | Gravity.CENTER; 
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
MyLabel label = new MyLabel(); 
windowManager.addView(label, params); 

Antwort

0

Schließlich beschloß ich, das Problem auf eigene Faust durch alles zu testen, die in meinem Kopf kam.

Das Ändern des Typs von TYPE_SYSTEM_ERROR zu TYPE_TOAST hat den Trick für mich getan. Es sind immer noch alle Aktivitäten und der Dialog ist auch sichtbar. Ich musste OnAttachedToWindow hinzufügen, um das Fenster-Token zu setzen.

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    params.token = getWindow().getDecorView().getRootView().getWindowToken(); 
    windowManager.addView(bugReportingLabel, params); 
}