summaryrefslogtreecommitdiffstats
path: root/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/incallui/AndroidManifest.xml3
-rw-r--r--java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java10
2 files changed, 13 insertions, 0 deletions
diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml
index 7286b0db7..b3d60d473 100644
--- a/java/com/android/incallui/AndroidManifest.xml
+++ b/java/com/android/incallui/AndroidManifest.xml
@@ -43,6 +43,9 @@
<!-- Set Bluetooth device -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+ <!-- Set audio selector window type TYPE_APPLICATION_OVERLAY -->
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
+
<!-- Set android:taskAffinity="com.android.incallui" for all activities to ensure proper
navigation. Otherwise system could bring up DialtactsActivity instead, e.g. when user unmerge a
call.
diff --git a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
index cd17c25da..8d0c9525e 100644
--- a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
+++ b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
@@ -24,8 +24,10 @@ import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.graphics.PorterDuff.Mode;
import android.os.Bundle;
+import android.provider.Settings;
import android.support.annotation.Nullable;
import android.support.design.widget.BottomSheetDialogFragment;
+import android.support.v4.os.BuildCompat;
import android.telecom.CallAudioState;
import android.view.LayoutInflater;
import android.view.View;
@@ -76,6 +78,14 @@ public class AudioRouteSelectorDialogFragment extends BottomSheetDialogFragment
LogUtil.i("AudioRouteSelectorDialogFragment.onCreateDialog", null);
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+ if (Settings.canDrawOverlays(getContext())) {
+ dialog
+ .getWindow()
+ .setType(
+ BuildCompat.isAtLeastO()
+ ? WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
+ : WindowManager.LayoutParams.TYPE_PHONE);
+ }
return dialog;
}