Fix bug #16896118 SIM cards should ONLY appear in search results for devices with 2+ SIM slots
- add the proper SearchIndexProvider to SimSettings
- allow indexing only an only if showSimCardTile() is true
- add Utils.showSimCardTile()
Change-Id: I5df2284d32f91fa454e1edebf1139d00593138a0
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index f4f34bc..e77ab4f 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -1042,7 +1042,7 @@
}
// Show the SIM Cards setting if there are more than 2 SIMs installed.
- if(tile.id != R.id.sim_settings || SimSettings.showSimCardScreen(this)){
+ if(tile.id != R.id.sim_settings || Utils.showSimCardTile(this)){
category.addTile(tile);
}
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index df05adc..ba5c1e5 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -823,4 +823,16 @@
if (icon == null) return null;
return CircleFramedDrawable.getInstance(context, icon);
}
+
+ /**
+ * Return whether or not the user should have a SIM Cards option in Settings.
+ * TODO: Change back to returning true if count is greater than one after testing.
+ * TODO: See bug 16533525.
+ */
+ public static boolean showSimCardTile(Context context) {
+ final TelephonyManager tm =
+ (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+
+ return tm.getSimCount() > 0;
+ }
}
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index a3d2b8d..e0e09a8 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -92,7 +92,7 @@
sResMap.put(SimSettings.class.getName(),
new SearchIndexableResource(
Ranking.getRankForClassName(SimSettings.class.getName()),
- R.xml.sim_settings,
+ NO_DATA_RES_ID,
SimSettings.class.getName(),
R.drawable.ic_sim_sd));
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
index 2e1c0f5..24ba4be 100644
--- a/src/com/android/settings/sim/SimSettings.java
+++ b/src/com/android/settings/sim/SimSettings.java
@@ -16,6 +16,7 @@
package com.android.settings.sim;
+import android.provider.SearchIndexableResource;
import com.android.settings.R;
import android.app.AlertDialog;
@@ -55,6 +56,7 @@
import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.Utils;
import com.android.settings.notification.DropDownPreference;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
@@ -86,18 +88,6 @@
private SubInfoRecord mCalls = null;
private SubInfoRecord mSMS = null;
- /**
- * Return whether or not the user should have a SIM Cards option in Settings.
- * TODO: Change back to returning true if count is greater than one after testing.
- * TODO: See bug 16533525.
- */
- public static boolean showSimCardScreen(Context context) {
- final TelephonyManager tm =
- (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-
- return tm.getSimCount() > 0;
- }
-
public SimSettings() {
super(DISALLOW_CONFIG_SIM);
}
@@ -370,4 +360,26 @@
builder.create().show();
}
}
+
+ /**
+ * For search
+ */
+ public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+ boolean enabled) {
+ ArrayList<SearchIndexableResource> result =
+ new ArrayList<SearchIndexableResource>();
+
+ if (Utils.showSimCardTile(context)) {
+ SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.sim_settings;
+ result.add(sir);
+ }
+
+ return result;
+ }
+ };
+
}