Change disable accessibility service dialog layout
Bug: 140307087
Test: Visual
Change-Id: I78d573f121e2f799a8395fcd2d21ee48a5fffb23
diff --git a/res/layout/disable_accessibility_service_dialog_content.xml b/res/layout/disable_accessibility_service_dialog_content.xml
deleted file mode 100644
index 680de4a..0000000
--- a/res/layout/disable_accessibility_service_dialog_content.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2019 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-
-<ScrollView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:textDirection="locale"
- android:scrollbarStyle="outsideOverlay"
- android:gravity="top">
-
- <LinearLayout
- android:theme="@style/Theme.AlertDialog"
- style="@style/AccessibilityDialog">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center_horizontal"
- android:paddingTop="32dp"
- android:paddingLeft="24dp"
- android:paddingRight="24dp">
-
- <TextView
- android:id="@+id/permissionDialog_disable_title"
- style="@style/AccessibilityDialogTitle" />
-
- <TextView
- android:id="@+id/permissionDialog_disable_message"
- android:gravity="center"
- android:text="@string/accessibility_service_warning_description"
- style="@style/AccessibilityDialogDescription" />
-
- </LinearLayout>
- <!-- Buttons on bottom of dialog -->
- <LinearLayout
- style="@style/AccessibilityDialogButtonList">
-
- <Space
- style="@style/AccessibilityDialogButtonBarSpace"/>
-
- <Button
- android:id="@+id/permission_disable_stop_button"
- android:text="@string/accessibility_dialog_button_stop"
- style="@style/AccessibilityDialogButton" />
-
- <Button
- android:id="@+id/permission_disable_cancel_button"
- android:text="@string/accessibility_dialog_button_cancel"
- style="@style/AccessibilityDialogButton" />
-
- </LinearLayout>
-
- </LinearLayout>
-
-</ScrollView>
diff --git a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
index 40ac641..1203e11 100644
--- a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
+++ b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
@@ -22,6 +22,7 @@
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.storage.StorageManager;
import android.text.BidiFormatter;
@@ -77,10 +78,16 @@
}
public static Dialog createDisableDialog(Activity parentActivity,
- AccessibilityServiceInfo info, View.OnClickListener listener) {
+ AccessibilityServiceInfo info, DialogInterface.OnClickListener listener) {
final AlertDialog ad = new AlertDialog.Builder(parentActivity)
- .setView(createDisableDialogContentView(parentActivity, info, listener))
+ .setTitle(parentActivity.getString(R.string.disable_service_title,
+ info.getResolveInfo().loadLabel(parentActivity.getPackageManager())))
+ .setMessage(parentActivity.getString(R.string.disable_service_message,
+ parentActivity.getString(R.string.accessibility_dialog_button_stop),
+ getServiceName(parentActivity, info)))
.setCancelable(true)
+ .setPositiveButton(R.string.accessibility_dialog_button_stop, listener)
+ .setNegativeButton(R.string.accessibility_dialog_button_cancel, listener)
.create();
return ad;
@@ -148,33 +155,6 @@
return content;
}
- private static View createDisableDialogContentView(Context context,
- AccessibilityServiceInfo info, View.OnClickListener listener) {
- LayoutInflater inflater = (LayoutInflater) context.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
-
- View content = inflater.inflate(R.layout.disable_accessibility_service_dialog_content,
- null);
-
- TextView permissionDialogTitle = content.findViewById(R.id.permissionDialog_disable_title);
- permissionDialogTitle.setText(context.getString(R.string.disable_service_title,
- getServiceName(context, info)));
- TextView permissionDialogMessage = content
- .findViewById(R.id.permissionDialog_disable_message);
- permissionDialogMessage.setText(context.getString(R.string.disable_service_message,
- context.getString(R.string.accessibility_dialog_button_stop),
- getServiceName(context, info)));
-
- Button permissionAllowButton = content.findViewById(
- R.id.permission_disable_stop_button);
- Button permissionDenyButton = content.findViewById(
- R.id.permission_disable_cancel_button);
- permissionAllowButton.setOnClickListener(listener);
- permissionDenyButton.setOnClickListener(listener);
-
- return content;
- }
-
// Get the service name and bidi wrap it to protect from bidi side effects.
private static CharSequence getServiceName(Context context, AccessibilityServiceInfo info) {
final Locale locale = context.getResources().getConfiguration().getLocales().get(0);
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index ec8df88..1556bec 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -25,6 +25,7 @@
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
@@ -49,8 +50,7 @@
import java.util.List;
-public class ToggleAccessibilityServicePreferenceFragment
- extends ToggleFeaturePreferenceFragment implements View.OnClickListener {
+public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeaturePreferenceFragment {
private static final int DIALOG_ID_ENABLE_WARNING = 1;
private static final int DIALOG_ID_DISABLE_WARNING = 2;
@@ -72,6 +72,42 @@
private Dialog mDialog;
+ private final View.OnClickListener mViewOnClickListener =
+ (View view) -> {
+ if (view.getId() == R.id.permission_enable_allow_button) {
+ if (isFullDiskEncrypted()) {
+ String title = createConfirmCredentialReasonMessage();
+ Intent intent = ConfirmDeviceCredentialActivity.createIntent(title, null);
+ startActivityForResult(intent,
+ ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION);
+ } else {
+ handleConfirmServiceEnabled(true);
+ if (isServiceSupportAccessibilityButton()) {
+ showDialog(DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL);
+ }
+ }
+ } else if (view.getId() == R.id.permission_enable_deny_button) {
+ handleConfirmServiceEnabled(false);
+ } else {
+ throw new IllegalArgumentException();
+ }
+ mDialog.dismiss();
+ };
+
+ private final DialogInterface.OnClickListener mDialogInterfaceOnClickListener =
+ (DialogInterface dialog, int which) -> {
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ handleConfirmServiceEnabled(false);
+ break;
+ case DialogInterface.BUTTON_NEGATIVE:
+ handleConfirmServiceEnabled(true);
+ break;
+ default:
+ throw new IllegalArgumentException();
+ }
+ };
+
@Override
public int getMetricsCategory() {
return SettingsEnums.ACCESSIBILITY_SERVICE;
@@ -137,7 +173,7 @@
return null;
}
mDialog = AccessibilityServiceWarning
- .createCapabilitiesDialog(getActivity(), info, this);
+ .createCapabilitiesDialog(getActivity(), info, mViewOnClickListener);
break;
}
case DIALOG_ID_DISABLE_WARNING: {
@@ -146,7 +182,7 @@
return null;
}
mDialog = AccessibilityServiceWarning
- .createDisableDialog(getActivity(), info, this);
+ .createDisableDialog(getActivity(), info, mDialogInterfaceOnClickListener);
break;
}
case DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL: {
@@ -210,32 +246,6 @@
}
}
- @Override
- public void onClick(View view) {
- if (view.getId() == R.id.permission_enable_allow_button) {
- if (isFullDiskEncrypted()) {
- String title = createConfirmCredentialReasonMessage();
- Intent intent = ConfirmDeviceCredentialActivity.createIntent(title, null);
- startActivityForResult(intent,
- ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION);
- } else {
- handleConfirmServiceEnabled(true);
- if (isServiceSupportAccessibilityButton()) {
- showDialog(DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL);
- }
- }
- } else if (view.getId() == R.id.permission_enable_deny_button) {
- handleConfirmServiceEnabled(false);
- } else if (view.getId() == R.id.permission_disable_stop_button) {
- handleConfirmServiceEnabled(false);
- } else if (view.getId() == R.id.permission_disable_cancel_button) {
- handleConfirmServiceEnabled(true);
- } else {
- throw new IllegalArgumentException();
- }
- mDialog.dismiss();
- }
-
private boolean isGestureNavigateEnabled() {
return getContext().getResources().getInteger(
com.android.internal.R.integer.config_navBarInteractionMode)