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(); }