2016-05-05 20 views
4

Müssen die Aktivität (Design-Dialogfeld) über den Dialer mit einigen Informationen in Aktivität wie echte Anrufer gefüllt zeigen. In entsperrtem Telefon funktioniert es gut.Aktivitätsanzeige (Themendialog) Über dem Dialer im Sperrbildschirm anzeigen?

Aber in gesperrten Telefon, es funktioniert nicht wie erwartet. Hat ein wenig gegoogelt und einige Flaggen gefunden, um den Dialog im Sperrbildschirm erscheinen zu lassen.

CallActivity.java

LayoutParams layoutParams = new LayoutParams(
    LayoutParams.MATCH_PARENT, 
    LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_SYSTEM_DIALOG | LayoutParams.TYPE_SYSTEM_ALERT | 
    LayoutParams.TYPE_SYSTEM_OVERLAY, 
    LayoutParams.FLAG_NOT_TOUCH_MODAL | 
      LayoutParams.FLAG_NOT_FOCUSABLE | 
      LayoutParams.FLAG_TURN_SCREEN_ON | 
      LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
      LayoutParams.FLAG_KEEP_SCREEN_ON | 
      LayoutParams.FLAG_DISMISS_KEYGUARD, 
    PixelFormat.TRANSLUCENT); 
getWindow().setAttributes(layoutParams); 

Im obigen Code hinzugefügt i Änderungen im Zusammenhang Aktivität erscheinen zu lassen, als Dialog und einige Flags (FLAG_TURN_SCREEN_ON, FLAG_SHOW_WHEN_LOCKED, FLAG_KEEP_SCREEN_ON, FLAG_DISMISS_KEYGUARD) im Zusammenhang mit Dialog Arbeit gut in Sperrbildschirm zu machen (aber es war nicht).

ich auch die Aktivität mit (von Rundfunkempfänger), beginnend

  Intent intent = new Intent(context, MyActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
      context.startActivity(intent); 

Antwort

-1

mit System Alert Erlaubnis Blick auf Window-Manager hinzufügen

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 

mParams = new WindowManager.LayoutParams(); 
mParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; 
mParams.format = PixelFormat.TRANSLUCENT; 
mParams.flags = 262184; 

mWindowManager.addView(view, mParams); 

Hinweis: Wenn die App Ziele API Level 23 oder höher, Der App-Benutzer muss diese Berechtigung der App über einen Berechtigungsverwaltungsbildschirm explizit gewähren. Die App fordert die Zustimmung des Benutzers durch Senden einer Absicht mit der Aktion ACTION_MANAGE_OVERLAY_PERMISSION an. Die App kann überprüfen, ob sie diese Berechtigung hat, indem sie Settings.canDrawOverlays() aufruft.

Verwandte Themen