diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 970ee76c7f0..39d4999225b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -82,6 +82,7 @@
+
{
// Filter obscured touches by consuming them.
- if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
+ if (((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0)
+ || ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0)) {
if (event.getAction() == MotionEvent.ACTION_UP) {
Toast.makeText(v.getContext(), R.string.touch_filtered_warning,
Toast.LENGTH_SHORT).show();
@@ -67,6 +67,8 @@ public class AccessibilityServiceWarning {
ad.create();
ad.getButton(AlertDialog.BUTTON_POSITIVE).setOnTouchListener(filterTouchListener);
+ ad.setCanceledOnTouchOutside(true);
+
return ad;
}
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index d7749ea0fc8..ae57f066c4d 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -16,26 +16,24 @@
package com.android.settings.accessibility;
import static android.content.DialogInterface.BUTTON_POSITIVE;
+import static com.android.settings.Utils.setOverlayAllowed;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Activity;
-import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.content.ComponentName;
import android.content.DialogInterface;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageParser;
+import android.os.Binder;
import android.os.Bundle;
+import android.os.IBinder;
import android.os.UserHandle;
import android.provider.Settings;
-import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.view.accessibility.AccessibilityManager;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.settings.DialogCreatable;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPickerFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -118,6 +116,7 @@ public class ShortcutServicePickerFragment extends DefaultAppPickerFragment {
implements DialogInterface.OnClickListener {
private static final String EXTRA_KEY = "extra_key";
private static final String TAG = "ConfirmationDialogFragment";
+ private IBinder mToken;
public static ConfirmationDialogFragment newInstance(ShortcutServicePickerFragment parent,
String key) {
@@ -126,6 +125,7 @@ public class ShortcutServicePickerFragment extends DefaultAppPickerFragment {
argument.putString(EXTRA_KEY, key);
fragment.setArguments(argument);
fragment.setTargetFragment(parent, 0);
+ fragment.mToken = new Binder();
return fragment;
}
@@ -146,6 +146,22 @@ public class ShortcutServicePickerFragment extends DefaultAppPickerFragment {
return AccessibilityServiceWarning.createCapabilitiesDialog(getActivity(), info, this);
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (mToken != null) {
+ setOverlayAllowed(getActivity(), mToken, false);
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ if (mToken != null) {
+ setOverlayAllowed(getActivity(), mToken, true);
+ }
+ }
+
@Override
public void onClick(DialogInterface dialog, int which) {
final Fragment fragment = getTargetFragment();
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 04aa5e4a836..e9fe6e9a936 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -26,8 +26,10 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.net.Uri;
+import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
+import android.os.IBinder;
import android.os.UserHandle;
import android.os.storage.StorageManager;
import android.provider.Settings;
@@ -47,6 +49,8 @@ import com.android.settingslib.accessibility.AccessibilityUtils;
import java.util.List;
+import static com.android.settings.Utils.setOverlayAllowed;
+
public class ToggleAccessibilityServicePreferenceFragment
extends ToggleFeaturePreferenceFragment implements DialogInterface.OnClickListener {
@@ -69,6 +73,8 @@ public class ToggleAccessibilityServicePreferenceFragment
private int mShownDialogId;
+ private final IBinder mToken = new Binder();
+
@Override
public int getMetricsCategory() {
return MetricsEvent.ACCESSIBILITY_SERVICE;
@@ -99,12 +105,18 @@ public class ToggleAccessibilityServicePreferenceFragment
public void onResume() {
mSettingsContentObserver.register(getContentResolver());
updateSwitchBarToggleSwitch();
+ if (mToken != null) {
+ setOverlayAllowed(getActivity(), mToken, false);
+ }
super.onResume();
}
@Override
public void onPause() {
mSettingsContentObserver.unregister(getContentResolver());
+ if (mToken != null) {
+ setOverlayAllowed(getActivity(), mToken, true);
+ }
super.onPause();
}