diff options
Diffstat (limited to 'src/com/android/settings/WallpaperTypeSettings.java')
-rw-r--r-- | src/com/android/settings/WallpaperTypeSettings.java | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/src/com/android/settings/WallpaperTypeSettings.java b/src/com/android/settings/WallpaperTypeSettings.java index fa5f0ac..f46315a 100644 --- a/src/com/android/settings/WallpaperTypeSettings.java +++ b/src/com/android/settings/WallpaperTypeSettings.java @@ -16,18 +16,23 @@ package com.android.settings; -import android.app.Activity; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceScreen; +import com.android.settings.indexer.Indexable; +import com.android.settings.indexer.IndexableData; +import com.android.settings.indexer.IndexableRef; +import java.util.ArrayList; import java.util.List; -public class WallpaperTypeSettings extends SettingsPreferenceFragment { +public class WallpaperTypeSettings extends SettingsPreferenceFragment implements Indexable { + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -38,9 +43,9 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment { private void populateWallpaperTypes() { // Search for activities that satisfy the ACTION_SET_WALLPAPER action - Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); + final Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); final PackageManager pm = getPackageManager(); - List<ResolveInfo> rList = pm.queryIntentActivities(intent, + final List<ResolveInfo> rList = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); final PreferenceScreen parent = getPreferenceScreen(); @@ -58,4 +63,42 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment { parent.addPreference(pref); } } + + public static final IndexDataProvider INDEX_DATA_PROVIDER = + new IndexDataProvider() { + @Override + public List<IndexableRef> getRefsToIndex(Context context) { + return null; + } + + @Override + public List<IndexableData> getRawDataToIndex(Context context) { + final List<IndexableData> result = new ArrayList<IndexableData>(); + + final Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); + final PackageManager pm = context.getPackageManager(); + final List<ResolveInfo> rList = pm.queryIntentActivities(intent, + PackageManager.MATCH_DEFAULT_ONLY); + + // Add indexable data for each of the matching activities + for (ResolveInfo info : rList) { + Intent prefIntent = new Intent(intent); + prefIntent.setComponent(new ComponentName( + info.activityInfo.packageName, info.activityInfo.name)); + CharSequence label = info.loadLabel(pm); + if (label == null) label = info.activityInfo.packageName; + + IndexableData data = new IndexableData(); + data.title = label.toString(); + data.fragmentTitle = context.getResources().getString( + R.string.wallpaper_settings_fragment_title); + data.intentAction = intent.getAction(); + data.intentTargetPackage = info.activityInfo.packageName; + data.intentTargetClass = info.activityInfo.name; + result.add(data); + } + + return result; + } + }; } |