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
This commit is contained in:
Fabrice Di Meglio
2014-08-08 12:27:57 -07:00
parent 1f4049edfe
commit 22a2a49b44
4 changed files with 38 additions and 14 deletions

View File

@@ -1042,7 +1042,7 @@ public class SettingsActivity extends Activity
} }
// Show the SIM Cards setting if there are more than 2 SIMs installed. // 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); category.addTile(tile);
} }

View File

@@ -823,4 +823,16 @@ public final class Utils {
if (icon == null) return null; if (icon == null) return null;
return CircleFramedDrawable.getInstance(context, icon); 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;
}
} }

View File

@@ -92,7 +92,7 @@ public final class SearchIndexableResources {
sResMap.put(SimSettings.class.getName(), sResMap.put(SimSettings.class.getName(),
new SearchIndexableResource( new SearchIndexableResource(
Ranking.getRankForClassName(SimSettings.class.getName()), Ranking.getRankForClassName(SimSettings.class.getName()),
R.xml.sim_settings, NO_DATA_RES_ID,
SimSettings.class.getName(), SimSettings.class.getName(),
R.drawable.ic_sim_sd)); R.drawable.ic_sim_sd));

View File

@@ -16,6 +16,7 @@
package com.android.settings.sim; package com.android.settings.sim;
import android.provider.SearchIndexableResource;
import com.android.settings.R; import com.android.settings.R;
import android.app.AlertDialog; import android.app.AlertDialog;
@@ -55,6 +56,7 @@ import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.RestrictedSettingsFragment; import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.notification.DropDownPreference; import com.android.settings.notification.DropDownPreference;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable; import com.android.settings.search.Indexable;
@@ -86,18 +88,6 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
private SubInfoRecord mCalls = null; private SubInfoRecord mCalls = null;
private SubInfoRecord mSMS = 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() { public SimSettings() {
super(DISALLOW_CONFIG_SIM); super(DISALLOW_CONFIG_SIM);
} }
@@ -370,4 +360,26 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
builder.create().show(); 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;
}
};
} }