diff options
Diffstat (limited to 'packages/SettingsLib/src/com/android')
3 files changed, 50 insertions, 18 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java b/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java index a18a7e9..8aa5671 100644 --- a/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/cm/ShortcutPickHelper.java @@ -83,6 +83,11 @@ public class ShortcutPickHelper { } public void pickShortcut(String[] names, ShortcutIconResource[] icons, int fragmentId) { + pickShortcut(names, icons, fragmentId, true); + } + + public void pickShortcut(String[] names, ShortcutIconResource[] icons, int fragmentId, + boolean showActivityPicker) { Bundle bundle = new Bundle(); ArrayList<String> shortcutNames = new ArrayList<String>(); @@ -92,7 +97,9 @@ public class ShortcutPickHelper { } } shortcutNames.add(mParent.getString(R.string.profile_applist_title)); - shortcutNames.add(mParent.getString(R.string.picker_activities)); + if (showActivityPicker) { + shortcutNames.add(mParent.getString(R.string.picker_activities)); + } bundle.putStringArrayList(Intent.EXTRA_SHORTCUT_NAME, shortcutNames); ArrayList<ShortcutIconResource> shortcutIcons = new ArrayList<ShortcutIconResource>(); @@ -102,7 +109,10 @@ public class ShortcutPickHelper { } } shortcutIcons.add(ShortcutIconResource.fromContext(mParent, android.R.drawable.sym_def_app_icon)); - shortcutIcons.add(ShortcutIconResource.fromContext(mParent, R.drawable.activities_icon)); + if (showActivityPicker) { + shortcutIcons.add( + ShortcutIconResource.fromContext(mParent, R.drawable.activities_icon)); + } bundle.putParcelableArrayList(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, shortcutIcons); Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY); diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java index 7b5bfb5..d4e09ca 100644 --- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java +++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java @@ -50,7 +50,8 @@ public class ZoneGetter { public static final String KEY_DISPLAYNAME = "name"; // value: String public static final String KEY_GMT = "gmt"; // value: String public static final String KEY_OFFSET = "offset"; // value: int (Integer) - + private static final String XML_ATTR_ID = "id"; + private static final String XML_ATTR_LOCALIZE_IN_PICKER = "localizeInPicker"; private ZoneGetter() {} public static String getTimeZoneOffsetAndName(TimeZone tz, Date now) { @@ -85,7 +86,7 @@ public class ZoneGetter { // selecting the wrong olson ids. // Get the list of olson ids to display to the user. - List<String> olsonIdsToDisplay = readTimezonesToDisplay(context); + List<ZoneInfo> olsonIdsToDisplay = readTimezonesToDisplay(context); // Create a lookup of local zone IDs. Set<String> localZoneIds = new TreeSet<String>(); @@ -97,9 +98,9 @@ public class ZoneGetter { // be ambiguous. Set<String> localZoneNames = new TreeSet<String>(); boolean localLongNamesAreAmbiguous = false; - for (String olsonId : olsonIdsToDisplay) { - if (localZoneIds.contains(olsonId)) { - TimeZone tz = TimeZone.getTimeZone(olsonId); + for (ZoneInfo zoneInfo : olsonIdsToDisplay) { + if (localZoneIds.contains(zoneInfo.mOlsonId) && zoneInfo.mLocalizeInPicker) { + TimeZone tz = TimeZone.getTimeZone(zoneInfo.mOlsonId); String zoneLongName = getZoneLongName(locale, tz, now); boolean longNameIsUnique = localZoneNames.add(zoneLongName); if (!longNameIsUnique) { @@ -111,12 +112,13 @@ public class ZoneGetter { // Generate the list of zone entries to return. List<Map<String, Object>> zones = new ArrayList<Map<String, Object>>(); - for (String olsonId : olsonIdsToDisplay) { - final TimeZone tz = TimeZone.getTimeZone(olsonId); + for (ZoneInfo zoneInfo: olsonIdsToDisplay) { + final TimeZone tz = TimeZone.getTimeZone(zoneInfo.mOlsonId); // Exemplar location display is the default. The only time we intend to display the long // name is when the olsonId is local AND long names are not ambiguous. - boolean isLocalZoneId = localZoneIds.contains(olsonId); - boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous; + boolean isLocalZoneId = localZoneIds.contains(zoneInfo.mOlsonId); + boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous + && zoneInfo.mLocalizeInPicker; String displayName = getZoneDisplayName(locale, tz, now, preferLongName); String gmtOffsetString = getGmtOffsetString(locale, tz, now); @@ -162,8 +164,8 @@ public class ZoneGetter { return TimeZoneNames.getExemplarLocation(locale.toString(), tz.getID()); } - private static List<String> readTimezonesToDisplay(Context context) { - List<String> olsonIds = new ArrayList<String>(); + private static List<ZoneInfo> readTimezonesToDisplay(Context context) { + List<ZoneInfo> olsonIds = new ArrayList<>(); try (XmlResourceParser xrp = context.getResources().getXml(R.xml.timezones)) { while (xrp.next() != XmlResourceParser.START_TAG) { continue; @@ -177,8 +179,10 @@ public class ZoneGetter { xrp.next(); } if (xrp.getName().equals(XMLTAG_TIMEZONE)) { - String olsonId = xrp.getAttributeValue(0); - olsonIds.add(olsonId); + String olsonId = xrp.getAttributeValue(null, XML_ATTR_ID); + boolean localize = xrp.getAttributeBooleanValue(null, + XML_ATTR_LOCALIZE_IN_PICKER, true); + olsonIds.add(new ZoneInfo(olsonId, localize)); } while (xrp.getEventType() != XmlResourceParser.END_TAG) { xrp.next(); @@ -212,4 +216,19 @@ public class ZoneGetter { isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR); return gmtString; } + + private static class ZoneInfo { + String mOlsonId; + boolean mLocalizeInPicker; + + public ZoneInfo(String olsonId) { + mOlsonId = olsonId; + mLocalizeInPicker = false; + } + + public ZoneInfo(String olsonId, boolean localizeInPicker) { + mOlsonId = olsonId; + mLocalizeInPicker = localizeInPicker; + } + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java b/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java index 224b967..517075d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java @@ -166,13 +166,16 @@ public class UidDetailProvider { final ApplicationInfo appInfo = ipm.getApplicationInfo(packageName, 0 /* no flags */, userId); - if (appInfo != null) { + if (appInfo != null && packageInfo != null) { detail.detailLabels[i] = appInfo.loadLabel(pm).toString(); detail.detailContentDescriptions[i] = um.getBadgedLabelForUser( detail.detailLabels[i], userHandle); if (packageInfo.sharedUserLabel != 0) { - detail.label = pm.getText(packageName, packageInfo.sharedUserLabel, - packageInfo.applicationInfo).toString(); + CharSequence label = pm.getText(packageName, + packageInfo.sharedUserLabel, packageInfo.applicationInfo); + if (label != null) { + detail.label = label.toString(); + } detail.icon = um.getBadgedIconForUser(appInfo.loadIcon(pm), userHandle); } } |