Merge "Fix unbundled accessibility features settings crash when launched"

This commit is contained in:
Menghan Li
2022-11-18 22:19:46 +00:00
committed by Android (Google) Code Review
5 changed files with 19 additions and 23 deletions

View File

@@ -41,6 +41,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.accessibility.AccessibilityUtils;
import java.util.List;
@@ -230,6 +231,10 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment {
new ComponentName(packageName, tileServiceClassName).flattenToString());
}
final int metricsCategory = FeatureFactory.getFactory(getActivity().getApplicationContext())
.getAccessibilityMetricsFeatureProvider()
.getDownloadedFeatureMetricsCategory(componentName);
extras.putInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY, metricsCategory);
extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName);
extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes());

View File

@@ -87,6 +87,7 @@ public class AccessibilitySettings extends DashboardFragment {
static final String EXTRA_ANIMATED_IMAGE_RES = "animated_image_res";
static final String EXTRA_HTML_DESCRIPTION = "html_description";
static final String EXTRA_TIME_FOR_LOGGING = "start_time_to_log_a11y_tool";
static final String EXTRA_METRICS_CATEGORY = "metrics_category";
// Timeout before we update the services if packages are added/removed
// since the AccessibilityManagerService has to do that processing first

View File

@@ -42,7 +42,6 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.overlay.FeatureFactory;
import java.util.ArrayList;
import java.util.List;
@@ -58,15 +57,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature
@Override
public int getMetricsCategory() {
// Retrieve from getArguments() directly because this function will be executed from
// onAttach(), but variable mComponentName only available after onProcessArguments()
// which comes from onCreateView().
final ComponentName componentName = getArguments().getParcelable(
AccessibilitySettings.EXTRA_COMPONENT_NAME);
return FeatureFactory.getFactory(getActivity().getApplicationContext())
.getAccessibilityMetricsFeatureProvider()
.getDownloadedFeatureMetricsCategory(componentName);
return getArguments().getInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY);
}
@Override

View File

@@ -37,6 +37,7 @@ import androidx.core.content.ContextCompat;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
@@ -118,9 +119,12 @@ public class RestrictedPreferenceHelper {
final String htmlDescription = info.loadHtmlDescription(mPm);
final String settingsClassName = info.getSettingsActivityName();
final String tileServiceClassName = info.getTileServiceName();
final int metricsCategory = FeatureFactory.getFactory(mContext)
.getAccessibilityMetricsFeatureProvider()
.getDownloadedFeatureMetricsCategory(componentName);
putBasicExtras(preference, prefKey, title, intro, description, imageRes,
htmlDescription, componentName);
htmlDescription, componentName, metricsCategory);
putServiceExtras(preference, resolveInfo, serviceEnabled);
putSettingsExtras(preference, packageName, settingsClassName);
putTileServiceExtras(preference, packageName, tileServiceClassName);
@@ -178,9 +182,12 @@ public class RestrictedPreferenceHelper {
final String htmlDescription = info.loadHtmlDescription(mPm);
final String settingsClassName = info.getSettingsActivityName();
final String tileServiceClassName = info.getTileServiceName();
final int metricsCategory = FeatureFactory.getFactory(mContext)
.getAccessibilityMetricsFeatureProvider()
.getDownloadedFeatureMetricsCategory(componentName);
putBasicExtras(preference, prefKey, title, intro, description, imageRes,
htmlDescription, componentName);
htmlDescription, componentName, metricsCategory);
putSettingsExtras(preference, componentName.getPackageName(), settingsClassName);
putTileServiceExtras(preference, componentName.getPackageName(),
tileServiceClassName);
@@ -265,7 +272,7 @@ public class RestrictedPreferenceHelper {
/** Puts the basic extras into {@link RestrictedPreference}'s getExtras(). */
private void putBasicExtras(RestrictedPreference preference, String prefKey,
CharSequence title, CharSequence intro, CharSequence summary, int imageRes,
String htmlDescription, ComponentName componentName) {
String htmlDescription, ComponentName componentName, int metricsCategory) {
final Bundle extras = preference.getExtras();
extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, prefKey);
extras.putCharSequence(AccessibilitySettings.EXTRA_TITLE, title);
@@ -274,6 +281,7 @@ public class RestrictedPreferenceHelper {
extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName);
extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, imageRes);
extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription);
extras.putInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY, metricsCategory);
}
/**

View File

@@ -49,7 +49,6 @@ import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.accessibility.AccessibilityUtils;
import java.util.List;
@@ -71,15 +70,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends
@Override
public int getMetricsCategory() {
// Retrieve from getArguments() directly because this function will be executed from
// onAttach(), but variable mComponentName only available after onProcessArguments()
// which comes from onCreateView().
final ComponentName componentName = getArguments().getParcelable(
AccessibilitySettings.EXTRA_COMPONENT_NAME);
return FeatureFactory.getFactory(getActivity().getApplicationContext())
.getAccessibilityMetricsFeatureProvider()
.getDownloadedFeatureMetricsCategory(componentName);
return getArguments().getInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY);
}
@Override