Loading res/layout/disable_accessibility_service_dialog_content.xmldeleted 100644 → 0 +0 −71 Original line number Diff line number Diff line <?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> src/com/android/settings/accessibility/AccessibilityServiceWarning.java +9 −29 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; 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; Loading Loading @@ -77,10 +78,16 @@ public class AccessibilityServiceWarning { } 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; Loading Loading @@ -148,33 +155,6 @@ public class AccessibilityServiceWarning { 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); Loading src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +40 −30 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.app.admin.DevicePolicyManager; 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; Loading @@ -49,8 +50,7 @@ import com.android.settingslib.accessibility.AccessibilityUtils; 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; Loading @@ -72,6 +72,42 @@ public class ToggleAccessibilityServicePreferenceFragment 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; Loading Loading @@ -137,7 +173,7 @@ public class ToggleAccessibilityServicePreferenceFragment return null; } mDialog = AccessibilityServiceWarning .createCapabilitiesDialog(getActivity(), info, this); .createCapabilitiesDialog(getActivity(), info, mViewOnClickListener); break; } case DIALOG_ID_DISABLE_WARNING: { Loading @@ -146,7 +182,7 @@ public class ToggleAccessibilityServicePreferenceFragment return null; } mDialog = AccessibilityServiceWarning .createDisableDialog(getActivity(), info, this); .createDisableDialog(getActivity(), info, mDialogInterfaceOnClickListener); break; } case DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL: { Loading Loading @@ -210,32 +246,6 @@ public class ToggleAccessibilityServicePreferenceFragment } } @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) Loading Loading
res/layout/disable_accessibility_service_dialog_content.xmldeleted 100644 → 0 +0 −71 Original line number Diff line number Diff line <?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>
src/com/android/settings/accessibility/AccessibilityServiceWarning.java +9 −29 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; 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; Loading Loading @@ -77,10 +78,16 @@ public class AccessibilityServiceWarning { } 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; Loading Loading @@ -148,33 +155,6 @@ public class AccessibilityServiceWarning { 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); Loading
src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +40 −30 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.app.admin.DevicePolicyManager; 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; Loading @@ -49,8 +50,7 @@ import com.android.settingslib.accessibility.AccessibilityUtils; 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; Loading @@ -72,6 +72,42 @@ public class ToggleAccessibilityServicePreferenceFragment 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; Loading Loading @@ -137,7 +173,7 @@ public class ToggleAccessibilityServicePreferenceFragment return null; } mDialog = AccessibilityServiceWarning .createCapabilitiesDialog(getActivity(), info, this); .createCapabilitiesDialog(getActivity(), info, mViewOnClickListener); break; } case DIALOG_ID_DISABLE_WARNING: { Loading @@ -146,7 +182,7 @@ public class ToggleAccessibilityServicePreferenceFragment return null; } mDialog = AccessibilityServiceWarning .createDisableDialog(getActivity(), info, this); .createDisableDialog(getActivity(), info, mDialogInterfaceOnClickListener); break; } case DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL: { Loading Loading @@ -210,32 +246,6 @@ public class ToggleAccessibilityServicePreferenceFragment } } @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) Loading