Add slice uri to slice index db
And slightly refactored the SliceDataConverter to remove 1 reflection. Bug: 126222433 Test: robotest Change-Id: Ic5782bdd71f5c9cb77879a35de81dc61c01d1912
This commit is contained in:
@@ -23,7 +23,6 @@ import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLAT
|
||||
import android.annotation.ColorInt;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -110,17 +109,6 @@ public class SliceBuilderUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the {@link SliceData.SliceType} for the {@param controllerClassName} and key.
|
||||
*/
|
||||
@SliceData.SliceType
|
||||
public static int getSliceType(Context context, String controllerClassName,
|
||||
String controllerKey) {
|
||||
BasePreferenceController controller = getPreferenceController(context, controllerClassName,
|
||||
controllerKey);
|
||||
return controller.getSliceType();
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits the Settings Slice Uri path into its two expected components:
|
||||
* - intent/action
|
||||
@@ -214,17 +202,6 @@ public class SliceBuilderUtils {
|
||||
return "";
|
||||
}
|
||||
|
||||
public static Uri getUri(String path, boolean isPlatformSlice) {
|
||||
final String authority = isPlatformSlice
|
||||
? SettingsSlicesContract.AUTHORITY
|
||||
: SettingsSliceProvider.SLICE_AUTHORITY;
|
||||
return new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(authority)
|
||||
.appendPath(path)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static Intent buildSearchResultPageIntent(Context context, String className, String key,
|
||||
String screenTitle, int sourceMetricsCategory) {
|
||||
final Bundle args = new Bundle();
|
||||
@@ -350,7 +327,7 @@ public class SliceBuilderUtils {
|
||||
.build();
|
||||
}
|
||||
|
||||
private static BasePreferenceController getPreferenceController(Context context,
|
||||
static BasePreferenceController getPreferenceController(Context context,
|
||||
String controllerClassName, String controllerKey) {
|
||||
try {
|
||||
return BasePreferenceController.createInstance(context, controllerClassName);
|
||||
|
@@ -27,14 +27,17 @@ import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_UNAVAI
|
||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.XmlResourceParser;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
@@ -199,17 +202,24 @@ class SliceDataConverter {
|
||||
}
|
||||
|
||||
final String key = bundle.getString(METADATA_KEY);
|
||||
final BasePreferenceController controller = SliceBuilderUtils
|
||||
.getPreferenceController(mContext, controllerClassName, key);
|
||||
// Only add pre-approved Slices available on the device.
|
||||
if (!controller.isSliceable() || !controller.isAvailable()) {
|
||||
continue;
|
||||
}
|
||||
final String title = bundle.getString(METADATA_TITLE);
|
||||
final String summary = bundle.getString(METADATA_SUMMARY);
|
||||
final int iconResId = bundle.getInt(METADATA_ICON);
|
||||
final int sliceType = SliceBuilderUtils.getSliceType(mContext, controllerClassName,
|
||||
key);
|
||||
|
||||
final int sliceType = controller.getSliceType();
|
||||
final boolean isPlatformSlice = bundle.getBoolean(METADATA_PLATFORM_SLICE_FLAG);
|
||||
final String unavailableSliceSubtitle = bundle.getString(
|
||||
METADATA_UNAVAILABLE_SLICE_SUBTITLE);
|
||||
|
||||
final SliceData xmlSlice = new SliceData.Builder()
|
||||
.setKey(key)
|
||||
.setUri(controller.getSliceUri())
|
||||
.setTitle(title)
|
||||
.setSummary(summary)
|
||||
.setIcon(iconResId)
|
||||
@@ -221,13 +231,7 @@ class SliceDataConverter {
|
||||
.setUnavailableSliceSubtitle(unavailableSliceSubtitle)
|
||||
.build();
|
||||
|
||||
final BasePreferenceController controller =
|
||||
SliceBuilderUtils.getPreferenceController(mContext, xmlSlice);
|
||||
|
||||
// Only add pre-approved Slices available on the device.
|
||||
if (controller.isSliceable() && controller.isAvailable()) {
|
||||
xmlSliceData.add(xmlSlice);
|
||||
}
|
||||
xmlSliceData.add(xmlSlice);
|
||||
}
|
||||
} catch (SliceData.InvalidSliceDataException e) {
|
||||
Log.w(TAG, "Invalid data when building SliceData for " + fragmentName, e);
|
||||
@@ -294,6 +298,12 @@ class SliceDataConverter {
|
||||
|
||||
sliceDataBuilder.setKey(flattenedName)
|
||||
.setTitle(title)
|
||||
.setUri(new Uri.Builder()
|
||||
.scheme(ContentResolver.SCHEME_CONTENT)
|
||||
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
|
||||
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
|
||||
.appendPath(flattenedName)
|
||||
.build())
|
||||
.setIcon(iconResource)
|
||||
.setSliceType(SliceData.SliceType.SWITCH);
|
||||
try {
|
||||
|
@@ -101,6 +101,7 @@ class SlicesIndexer implements Runnable {
|
||||
for (SliceData dataRow : indexData) {
|
||||
values = new ContentValues();
|
||||
values.put(IndexColumns.KEY, dataRow.getKey());
|
||||
values.put(IndexColumns.SLICE_URI, dataRow.getUri().toSafeString());
|
||||
values.put(IndexColumns.TITLE, dataRow.getTitle());
|
||||
values.put(IndexColumns.SUMMARY, dataRow.getSummary());
|
||||
values.put(IndexColumns.SCREENTITLE, dataRow.getScreenTitle().toString());
|
||||
|
Reference in New Issue
Block a user