2016-05-10 1 views
2

Ich muss meine Ansicht über der Dialer-Anwendung anzeigen, deshalb habe ich TYPE_PHONE für diesen Zweck verwendet, der erreichbar ist, aber immer noch auf einigen Geräten wie Nexus 5 Dialer Anwendung des Geräts versteckt es.Beim Hinzufügen der Ansicht zu einem Fenster mit WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY wird kein Touch-Ereignis

Durch die Verwendung von TYPE_SYSTEM_OVERLAY wird die Ansicht über der Dialer-Anwendung sichtbar, die Berührung ist jedoch nicht vorhanden. Jede Hilfe diesbezüglich wird großartig sein.

Antwort

7

Nach viel Suche nach oben genannten Problem, fand ich Lösung mein Selbst. Hier habe ich gesehen, dass ich auf dem Gerät alles im Blick hatte und es auch anfassbar machte, was mit TYPE_SYSTEM_OVERLAY nicht möglich war.

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
         WindowManager.LayoutParams.MATCH_PARENT, 
         WindowManager.LayoutParams.WRAP_CONTENT, 
         WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, 
         WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
           WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, 
         PixelFormat.TRANSPARENT); 

params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; 
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
wm.addView(view, params); 
+0

einen Fehler bekommen: "Verursacht durch: android.view.WindowManager $ BadTokenException: Nicht imstande, Fenster [email protected] hinzufügen - Erlaubnis für diesen Fenstertyp verweigert" O 6.0 Eibisch –

+0

@AhmadShahwaiz Zum Hinzufügen der Ansicht zu einem Fenster müssen wir die System-Level-Berechtigung android.permission.SYSTEM_ALERT_WINDOW im Manifest erwähnen. Und auf O 6.0 Eibisch, haben wir zur Laufzeit auf Anfrage Berechtigungen vor Ansicht Fenster Hinzufügen wie folgt (Da dies System permission) 'if (! Settings.canDrawOverlays (this)) { Intent Absicht = new Intent (Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse ("Paket:" + getPackageName())); startActivityForResult (Absicht, OVERLAY_REQ_CODE); } ' – patilmandar2007

+0

Ja, ich mache es, aber die Callback-Methode wird nicht aufgerufen. Von wo aus kann ich überprüfen, ob der Benutzer die Erlaubnis erteilt hat. Das Folgende wird nicht angerufen. @TargetApi (Build.VERSION_CODES.M) @Override Hohlraum onActivityResult geschützt (int requestCode, int Resultcode, Absichtsdaten) { super.onActivityResult (requestCode, Resultcode, Daten); } –

Verwandte Themen