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.
|
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
|
<Preference
|
||||||
android:summary="@string/data_usage_metered_body"
|
android:summary="@string/data_usage_metered_body"
|
||||||
|
@@ -66,7 +66,7 @@ import java.util.Iterator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public class Utils {
|
public final class Utils {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the preference's title to the matching activity's label.
|
* 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 static com.android.settings.DataUsageSummary.hasWifiRadio;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.net.NetworkPolicy;
|
import android.net.NetworkPolicy;
|
||||||
import android.net.NetworkPolicyManager;
|
import android.net.NetworkPolicyManager;
|
||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
@@ -31,15 +32,23 @@ import android.os.Bundle;
|
|||||||
import android.preference.CheckBoxPreference;
|
import android.preference.CheckBoxPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
|
import android.provider.SearchIndexableResource;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
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.
|
* 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;
|
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.fuelgauge.PowerUsageSummary;
|
||||||
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
||||||
import com.android.settings.location.LocationSettings;
|
import com.android.settings.location.LocationSettings;
|
||||||
|
import com.android.settings.net.DataUsageMeteredSettings;
|
||||||
import com.android.settings.notification.NotificationDisplaySettings;
|
import com.android.settings.notification.NotificationDisplaySettings;
|
||||||
import com.android.settings.notification.NotificationSettings;
|
import com.android.settings.notification.NotificationSettings;
|
||||||
import com.android.settings.notification.OtherSoundSettings;
|
import com.android.settings.notification.OtherSoundSettings;
|
||||||
@@ -81,50 +82,71 @@ public final class Ranking {
|
|||||||
private static HashMap<String, Integer> sBaseRankMap = new HashMap<String, Integer>();
|
private static HashMap<String, Integer> sBaseRankMap = new HashMap<String, Integer>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
// Wi-Fi
|
||||||
sRankMap.put(WifiSettings.class.getName(), RANK_WIFI);
|
sRankMap.put(WifiSettings.class.getName(), RANK_WIFI);
|
||||||
sRankMap.put(AdvancedWifiSettings.class.getName(), RANK_WIFI);
|
sRankMap.put(AdvancedWifiSettings.class.getName(), RANK_WIFI);
|
||||||
|
|
||||||
|
// BT
|
||||||
sRankMap.put(BluetoothSettings.class.getName(), RANK_BT);
|
sRankMap.put(BluetoothSettings.class.getName(), RANK_BT);
|
||||||
|
|
||||||
|
// DataUsage
|
||||||
sRankMap.put(DataUsageSummary.class.getName(), RANK_DATA_USAGE);
|
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);
|
sRankMap.put(WirelessSettings.class.getName(), RANK_WIRELESS);
|
||||||
|
|
||||||
|
// Home
|
||||||
sRankMap.put(HomeSettings.class.getName(), RANK_HOME);
|
sRankMap.put(HomeSettings.class.getName(), RANK_HOME);
|
||||||
|
|
||||||
|
// Display
|
||||||
sRankMap.put(DisplaySettings.class.getName(), RANK_DISPLAY);
|
sRankMap.put(DisplaySettings.class.getName(), RANK_DISPLAY);
|
||||||
|
|
||||||
|
// Wallpapers
|
||||||
sRankMap.put(WallpaperTypeSettings.class.getName(), RANK_WALLPAPER);
|
sRankMap.put(WallpaperTypeSettings.class.getName(), RANK_WALLPAPER);
|
||||||
|
|
||||||
|
// Notifications
|
||||||
sRankMap.put(NotificationSettings.class.getName(), RANK_NOTIFICATIONS);
|
sRankMap.put(NotificationSettings.class.getName(), RANK_NOTIFICATIONS);
|
||||||
sRankMap.put(NotificationDisplaySettings.class.getName(), RANK_NOTIFICATIONS);
|
sRankMap.put(NotificationDisplaySettings.class.getName(), RANK_NOTIFICATIONS);
|
||||||
sRankMap.put(OtherSoundSettings.class.getName(), RANK_NOTIFICATIONS);
|
sRankMap.put(OtherSoundSettings.class.getName(), RANK_NOTIFICATIONS);
|
||||||
sRankMap.put(ZenModeSettings.class.getName(), RANK_NOTIFICATIONS);
|
sRankMap.put(ZenModeSettings.class.getName(), RANK_NOTIFICATIONS);
|
||||||
|
|
||||||
|
// Memory
|
||||||
sRankMap.put(Memory.class.getName(), RANK_MEMORY);
|
sRankMap.put(Memory.class.getName(), RANK_MEMORY);
|
||||||
|
|
||||||
|
// Battery
|
||||||
sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE);
|
sRankMap.put(PowerUsageSummary.class.getName(), RANK_POWER_USAGE);
|
||||||
sRankMap.put(BatterySaverSettings.class.getName(), RANK_POWER_USAGE);
|
sRankMap.put(BatterySaverSettings.class.getName(), RANK_POWER_USAGE);
|
||||||
|
|
||||||
|
// Users
|
||||||
sRankMap.put(UserSettings.class.getName(), RANK_USERS);
|
sRankMap.put(UserSettings.class.getName(), RANK_USERS);
|
||||||
|
|
||||||
|
// Location
|
||||||
sRankMap.put(LocationSettings.class.getName(), RANK_LOCATION);
|
sRankMap.put(LocationSettings.class.getName(), RANK_LOCATION);
|
||||||
|
|
||||||
|
// Security
|
||||||
sRankMap.put(SecuritySettings.class.getName(), RANK_SECURITY);
|
sRankMap.put(SecuritySettings.class.getName(), RANK_SECURITY);
|
||||||
sRankMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), RANK_SECURITY);
|
sRankMap.put(ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), RANK_SECURITY);
|
||||||
|
|
||||||
|
// IMEs
|
||||||
sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME);
|
sRankMap.put(InputMethodAndLanguageSettings.class.getName(), RANK_IME);
|
||||||
|
|
||||||
|
// Privacy
|
||||||
sRankMap.put(PrivacySettings.class.getName(), RANK_PRIVACY);
|
sRankMap.put(PrivacySettings.class.getName(), RANK_PRIVACY);
|
||||||
|
|
||||||
|
// Date / Time
|
||||||
sRankMap.put(DateTimeSettings.class.getName(), RANK_DATE_TIME);
|
sRankMap.put(DateTimeSettings.class.getName(), RANK_DATE_TIME);
|
||||||
|
|
||||||
|
// Accessibility
|
||||||
sRankMap.put(AccessibilitySettings.class.getName(), RANK_ACCESSIBILITY);
|
sRankMap.put(AccessibilitySettings.class.getName(), RANK_ACCESSIBILITY);
|
||||||
|
|
||||||
|
// Print
|
||||||
sRankMap.put(PrintSettingsFragment.class.getName(), RANK_PRINTING);
|
sRankMap.put(PrintSettingsFragment.class.getName(), RANK_PRINTING);
|
||||||
|
|
||||||
|
// Development
|
||||||
sRankMap.put(DevelopmentSettings.class.getName(), RANK_DEVELOPEMENT);
|
sRankMap.put(DevelopmentSettings.class.getName(), RANK_DEVELOPEMENT);
|
||||||
|
|
||||||
|
// Device infos
|
||||||
sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO);
|
sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO);
|
||||||
|
|
||||||
sBaseRankMap.put("com.android.settings", 0);
|
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.fuelgauge.PowerUsageSummary;
|
||||||
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
|
||||||
import com.android.settings.location.LocationSettings;
|
import com.android.settings.location.LocationSettings;
|
||||||
|
import com.android.settings.net.DataUsageMeteredSettings;
|
||||||
import com.android.settings.notification.NotificationDisplaySettings;
|
import com.android.settings.notification.NotificationDisplaySettings;
|
||||||
import com.android.settings.notification.NotificationSettings;
|
import com.android.settings.notification.NotificationSettings;
|
||||||
import com.android.settings.notification.OtherSoundSettings;
|
import com.android.settings.notification.OtherSoundSettings;
|
||||||
@@ -85,6 +86,13 @@ public final class SearchIndexableResources {
|
|||||||
DataUsageSummary.class.getName(),
|
DataUsageSummary.class.getName(),
|
||||||
R.drawable.ic_settings_data_usage));
|
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(),
|
sResMap.put(WirelessSettings.class.getName(),
|
||||||
new SearchIndexableResource(
|
new SearchIndexableResource(
|
||||||
Ranking.getRankForClassName(WirelessSettings.class.getName()),
|
Ranking.getRankForClassName(WirelessSettings.class.getName()),
|
||||||
|
Reference in New Issue
Block a user