Add Search / Indexing to Data Usage / Mobile Hotspots
- implement a BaseSearchIndexProvider and pass all the needed strings to index (including the Wi-Fi SSIDs) Change-Id: Ic7a640c76cd7c2af77585e87e216b283af61a29e
This commit is contained in:
@@ -14,7 +14,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:title="@string/display_settings">
|
||||
|
||||
<Preference
|
||||
android:summary="@string/data_usage_metered_body"
|
||||
|
@@ -66,7 +66,7 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class Utils {
|
||||
public final class Utils {
|
||||
|
||||
/**
|
||||
* Set the preference's title to the matching activity's label.
|
||||
|
@@ -22,6 +22,7 @@ import static com.android.settings.DataUsageSummary.hasReadyMobileRadio;
|
||||
import static com.android.settings.DataUsageSummary.hasWifiRadio;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.net.NetworkPolicy;
|
||||
import android.net.NetworkPolicyManager;
|
||||
import android.net.NetworkTemplate;
|
||||
@@ -31,15 +32,23 @@ import android.os.Bundle;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceCategory;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settings.search.SearchIndexableRaw;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Panel to configure {@link NetworkPolicy#metered} for networks.
|
||||
*/
|
||||
public class DataUsageMeteredSettings extends SettingsPreferenceFragment {
|
||||
public class DataUsageMeteredSettings extends SettingsPreferenceFragment implements Indexable {
|
||||
|
||||
private static final boolean SHOW_MOBILE_CATEGORY = false;
|
||||
|
||||
@@ -141,4 +150,82 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For search
|
||||
*/
|
||||
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider() {
|
||||
@Override
|
||||
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
|
||||
final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>();
|
||||
final Resources res = context.getResources();
|
||||
|
||||
// Add fragment title
|
||||
SearchIndexableRaw data = new SearchIndexableRaw(context);
|
||||
data.title = res.getString(R.string.data_usage_menu_metered);
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
|
||||
// Body
|
||||
data = new SearchIndexableRaw(context);
|
||||
data.title = res.getString(R.string.data_usage_metered_body);
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
|
||||
if (SHOW_MOBILE_CATEGORY && hasReadyMobileRadio(context)) {
|
||||
// Mobile networks category
|
||||
data = new SearchIndexableRaw(context);
|
||||
data.title = res.getString(R.string.data_usage_metered_mobile);
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
|
||||
final TelephonyManager tele = TelephonyManager.from(context);
|
||||
|
||||
data = new SearchIndexableRaw(context);
|
||||
data.title = tele.getNetworkOperatorName();
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
}
|
||||
|
||||
// Wi-Fi networks category
|
||||
data = new SearchIndexableRaw(context);
|
||||
data.title = res.getString(R.string.data_usage_metered_wifi);
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
|
||||
final WifiManager wifiManager =
|
||||
(WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||
if (hasWifiRadio(context) && wifiManager.isWifiEnabled()) {
|
||||
for (WifiConfiguration config : wifiManager.getConfiguredNetworks()) {
|
||||
if (config.SSID != null) {
|
||||
final String networkId = config.SSID;
|
||||
|
||||
data = new SearchIndexableRaw(context);
|
||||
data.title = removeDoubleQuotes(networkId);
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
data = new SearchIndexableRaw(context);
|
||||
data.title = res.getString(R.string.data_usage_metered_wifi_disabled);
|
||||
data.screenTitle = res.getString(R.string.data_usage_menu_metered);
|
||||
result.add(data);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getNonIndexableKeys(Context context) {
|
||||
final ArrayList<String> result = new ArrayList<String>();
|
||||
if (!SHOW_MOBILE_CATEGORY || !hasReadyMobileRadio(context)) {
|
||||
result.add("mobile");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
@@ -34,6 +34,7 @@ import com.android.settings.fuelgauge.BatterySaverSettings;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
||||
import com.android.settings.location.LocationSettings;
|
||||
import com.android.settings.net.DataUsageMeteredSettings;
|
||||
import com.android.settings.notification.NotificationDisplaySettings;
|
||||
import com.android.settings.notification.NotificationSettings;
|
||||
import com.android.settings.notification.OtherSoundSettings;
|
||||
@@ -81,50 +82,71 @@ public final class Ranking {
|
||||
private static HashMap<String, Integer> sBaseRankMap = new HashMap<String, Integer>();
|
||||
|
||||
static {
|
||||
// Wi-Fi
|
||||
sRankMap.put(WifiSettings.class.getName(), RANK_WIFI);
|
||||
sRankMap.put(AdvancedWifiSettings.class.getName(), RANK_WIFI);
|
||||
|
||||
// BT
|
||||
sRankMap.put(BluetoothSettings.class.getName(), RANK_BT);
|
||||
|
||||
// DataUsage
|
||||
sRankMap.put(DataUsageSummary.class.getName(), RANK_DATA_USAGE);
|
||||
sRankMap.put(DataUsageMeteredSettings.class.getName(), RANK_DATA_USAGE);
|
||||
|
||||
// Other wireless settinfs
|
||||
sRankMap.put(WirelessSettings.class.getName(), RANK_WIRELESS);
|
||||
|
||||
// Home
|
||||
sRankMap.put(HomeSettings.class.getName(), RANK_HOME);
|
||||
|
||||
// Display
|
||||
sRankMap.put(DisplaySettings.class.getName(), RANK_DISPLAY);
|
||||
|
||||
// Wallpapers
|
||||
sRankMap.put(WallpaperTypeSettings.class.getName(), RANK_WALLPAPER);
|
||||
|
||||
// Notifications
|
||||
sRankMap.put(NotificationSettings.class.getName(), RANK_NOTIFICATIONS);
|
||||
sRankMap.put(NotificationDisplaySettings.class.getName(), RANK_NOTIFICATIONS);
|
||||
sRankMap.put(OtherSoundSettings.class.getName(), RANK_NOTIFICATIONS);
|
||||
sRankMap.put(ZenModeSettings.class.getName(), RANK_NOTIFICATIONS);
|
||||
|
||||
// Memory
|
||||
sRankMap.put(Memory.class.getName(), RANK_MEMORY);
|
||||
|
||||
// Battery
|
||||
sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE);
|
||||
sRankMap.put(BatterySaverSettings.class.getName(), RANK_POWER_USAGE);
|
||||
|
||||
// Users
|
||||
sRankMap.put(UserSettings.class.getName(), RANK_USERS);
|
||||
|
||||
// Location
|
||||
sRankMap.put(LocationSettings.class.getName(), RANK_LOCATION);
|
||||
|
||||
// Security
|
||||
sRankMap.put(SecuritySettings.class.getName(), RANK_SECURITY);
|
||||
sRankMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), RANK_SECURITY);
|
||||
|
||||
// IMEs
|
||||
sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME);
|
||||
|
||||
// Privacy
|
||||
sRankMap.put(PrivacySettings.class.getName(), RANK_PRIVACY);
|
||||
|
||||
// Date / Time
|
||||
sRankMap.put(DateTimeSettings.class.getName(), RANK_DATE_TIME);
|
||||
|
||||
// Accessibility
|
||||
sRankMap.put(AccessibilitySettings.class.getName(), RANK_ACCESSIBILITY);
|
||||
|
||||
// Print
|
||||
sRankMap.put(PrintSettingsFragment.class.getName(), RANK_PRINTING);
|
||||
|
||||
// Development
|
||||
sRankMap.put(DevelopmentSettings.class.getName(), RANK_DEVELOPEMENT);
|
||||
|
||||
// Device infos
|
||||
sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO);
|
||||
|
||||
sBaseRankMap.put("com.android.settings", 0);
|
||||
|
@@ -37,6 +37,7 @@ import com.android.settings.fuelgauge.BatterySaverSettings;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
||||
import com.android.settings.location.LocationSettings;
|
||||
import com.android.settings.net.DataUsageMeteredSettings;
|
||||
import com.android.settings.notification.NotificationDisplaySettings;
|
||||
import com.android.settings.notification.NotificationSettings;
|
||||
import com.android.settings.notification.OtherSoundSettings;
|
||||
@@ -85,6 +86,13 @@ public final class SearchIndexableResources {
|
||||
DataUsageSummary.class.getName(),
|
||||
R.drawable.ic_settings_data_usage));
|
||||
|
||||
sResMap.put(DataUsageMeteredSettings.class.getName(),
|
||||
new SearchIndexableResource(
|
||||
Ranking.getRankForClassName(DataUsageMeteredSettings.class.getName()),
|
||||
NO_DATA_RES_ID,
|
||||
DataUsageMeteredSettings.class.getName(),
|
||||
R.drawable.ic_settings_data_usage));
|
||||
|
||||
sResMap.put(WirelessSettings.class.getName(),
|
||||
new SearchIndexableResource(
|
||||
Ranking.getRankForClassName(WirelessSettings.class.getName()),
|
||||
|
Reference in New Issue
Block a user