From 652c425acb24bd5fc68e82985edde9d6ae4dfa76 Mon Sep 17 00:00:00 2001 From: Peter_Liang Date: Fri, 11 Jun 2021 10:21:12 +0800 Subject: [PATCH] Fixing the crash when tapping the "Downloaded apps" in Accessibility page. Root cause: When Accessibility settings parse the application which is from google play store, the settings have no check if the resource is valid before delivery the parameter into the corresponding fragment. Solution: Check if the resource is valid before creating the image uri. Bug: 190716289 Test: manual test Change-Id: I56eba2232ddf6ed5b2e526d4698479465a012e52 --- .../LaunchAccessibilityActivityPreferenceFragment.java | 10 ++++++---- .../ToggleAccessibilityServicePreferenceFragment.java | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index fe08d6b5bde..98090ac1dba 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -78,10 +78,12 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature // Settings animated image. final int animatedImageRes = arguments.getInt( AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES); - mImageUri = new Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) - .authority(mComponentName.getPackageName()) - .appendPath(String.valueOf(animatedImageRes)) - .build(); + if (animatedImageRes > 0) { + mImageUri = new Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) + .authority(mComponentName.getPackageName()) + .appendPath(String.valueOf(animatedImageRes)) + .build(); + } // Settings html description. mHtmlDescription = arguments.getCharSequence(AccessibilitySettings.EXTRA_HTML_DESCRIPTION); diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 9d948583fd4..934907181a7 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -396,10 +396,12 @@ public class ToggleAccessibilityServicePreferenceFragment extends // Settings animated image. final int animatedImageRes = arguments.getInt( AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES); - mImageUri = new Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) - .authority(mComponentName.getPackageName()) - .appendPath(String.valueOf(animatedImageRes)) - .build(); + if (animatedImageRes > 0) { + mImageUri = new Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) + .authority(mComponentName.getPackageName()) + .appendPath(String.valueOf(animatedImageRes)) + .build(); + } // Get Accessibility service name. mPackageName = getAccessibilityServiceInfo().getResolveInfo().loadLabel(