[RESTRICT AUTOMERGE] Protect VPN dialogs against overlay.
Bug: 130568701 Test: manual. After this, can't display on top of it Change-Id: Ib032f800edb0416cc15f01a34954340d0d0ffa78 (cherry picked from commit 4e80dc2861614d25a1f957f50040a8cf04812d11)
This commit is contained in:
committed by
Bryan Ferris
parent
fbc22c2b6d
commit
27d4734049
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.CONTROL_VPN" />
|
<uses-permission android:name="android.permission.CONTROL_VPN" />
|
||||||
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
|
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
|
||||||
|
<uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
|
||||||
|
|
||||||
<application android:label="VpnDialogs"
|
<application android:label="VpnDialogs"
|
||||||
android:allowBackup="false">
|
android:allowBackup="false">
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
package com.android.vpndialogs;
|
package com.android.vpndialogs;
|
||||||
|
|
||||||
|
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
|
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
||||||
|
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -31,7 +35,6 @@ import android.text.method.LinkMovementMethod;
|
|||||||
import android.text.style.ClickableSpan;
|
import android.text.style.ClickableSpan;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.internal.app.AlertActivity;
|
import com.android.internal.app.AlertActivity;
|
||||||
@@ -74,8 +77,9 @@ public class AlwaysOnDisconnectedDialog extends AlertActivity
|
|||||||
setupAlert();
|
setupAlert();
|
||||||
|
|
||||||
getWindow().setCloseOnTouchOutside(false);
|
getWindow().setCloseOnTouchOutside(false);
|
||||||
getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
|
getWindow().setType(TYPE_SYSTEM_ALERT);
|
||||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
|
getWindow().addFlags(FLAG_ALT_FOCUSABLE_IM);
|
||||||
|
getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.vpndialogs;
|
package com.android.vpndialogs;
|
||||||
|
|
||||||
|
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@@ -78,6 +80,7 @@ public class ConfirmDialog extends AlertActivity
|
|||||||
setupAlert();
|
setupAlert();
|
||||||
|
|
||||||
getWindow().setCloseOnTouchOutside(false);
|
getWindow().setCloseOnTouchOutside(false);
|
||||||
|
getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
|
||||||
Button button = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
|
Button button = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
|
||||||
button.setFilterTouchesWhenObscured(true);
|
button.setFilterTouchesWhenObscured(true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user