Accessibility shortcut primary action - add settings UI for accessibility shortcut type fragment

Bug: 142531433
Test: manual test
Change-Id: I6a9eebc1718f2b924cfb373f09abb57890fa10a5
This commit is contained in:
jasonwshsu
2020-02-27 18:25:16 +08:00
parent 4d59bce21b
commit c7fa4da58d
2 changed files with 27 additions and 0 deletions

View File

@@ -635,9 +635,11 @@ public class AccessibilitySettings extends DashboardFragment {
final String description = info.loadDescription(mPm);
final int imageRes = info.getAnimatedImageRes();
final String htmlDescription = info.loadHtmlDescription(mPm);
final String settingsClassName = info.getSettingsActivityName();
putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription,
componentName);
putSettingsExtras(preference, packageName, settingsClassName);
preferenceList.add(preference);
}

View File

@@ -26,10 +26,12 @@ import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.accessibility.AccessibilityManager;
import androidx.annotation.Nullable;
import androidx.preference.SwitchPreference;
import com.android.settings.R;
@@ -82,6 +84,12 @@ public class LaunchAccessibilityActivityPreferenceFragment extends
// Settings html description.
mHtmlDescription = arguments.getCharSequence(AccessibilitySettings.EXTRA_HTML_DESCRIPTION);
// Settings title and intent.
final String settingsTitle = arguments.getString(
AccessibilitySettings.EXTRA_SETTINGS_TITLE);
mSettingsIntent = TextUtils.isEmpty(settingsTitle) ? null : getSettingsIntent(arguments);
mSettingsTitle = (mSettingsIntent == null) ? null : settingsTitle;
}
@Override
@@ -131,4 +139,21 @@ public class LaunchAccessibilityActivityPreferenceFragment extends
Log.w(TAG, "Target activity not found.");
}
}
@Nullable
private Intent getSettingsIntent(Bundle arguments) {
final String settingsComponentName = arguments.getString(
AccessibilitySettings.EXTRA_SETTINGS_COMPONENT_NAME);
if (TextUtils.isEmpty(settingsComponentName)) {
return null;
}
final Intent settingsIntent = new Intent(Intent.ACTION_MAIN).setComponent(
ComponentName.unflattenFromString(settingsComponentName));
if (getPackageManager().queryIntentActivities(settingsIntent, /* flags= */ 0).isEmpty()) {
return null;
}
return settingsIntent;
}
}