From f994261b7c1372778bf1f05b1d32427738e84a7a Mon Sep 17 00:00:00 2001 From: erfanian Date: Tue, 31 Oct 2017 11:24:48 -0700 Subject: Add country code support to ad settings. This allows users to override our automatically selected country code. Bug: 63994464 Test: unit tests PiperOrigin-RevId: 174064853 Change-Id: I12bd770300b041f3c7d5b8d5f5c0b75c4945492e --- .../dialer/assisteddialing/ConcreteCreator.java | 6 +- .../dialer/assisteddialing/LocationDetector.java | 16 +- .../ui/AssistedDialingSettingFragment.java | 18 + .../assisteddialing/ui/res/values/string.xml | 509 ++++++++++++++++++++- .../ui/res/xml/assisted_dialing_setting.xml | 22 +- 5 files changed, 563 insertions(+), 8 deletions(-) diff --git a/java/com/android/dialer/assisteddialing/ConcreteCreator.java b/java/com/android/dialer/assisteddialing/ConcreteCreator.java index 9244f6934..c3721a7a8 100644 --- a/java/com/android/dialer/assisteddialing/ConcreteCreator.java +++ b/java/com/android/dialer/assisteddialing/ConcreteCreator.java @@ -89,7 +89,11 @@ public final class ConcreteCreator { new Constraints( context, configProvider.getString("assisted_dialing_csv_country_codes", "")); return new AssistedDialingMediatorImpl( - new LocationDetector(telephonyManager), new NumberTransformer(constraints)); + new LocationDetector( + telephonyManager, + PreferenceManager.getDefaultSharedPreferences(context) + .getString(context.getString(R.string.assisted_dialing_setting_cc_key), null)), + new NumberTransformer(constraints)); } /** Returns a boolean indicating whether or not the assisted dialing feature is enabled. */ diff --git a/java/com/android/dialer/assisteddialing/LocationDetector.java b/java/com/android/dialer/assisteddialing/LocationDetector.java index 684068912..8e7535c1b 100644 --- a/java/com/android/dialer/assisteddialing/LocationDetector.java +++ b/java/com/android/dialer/assisteddialing/LocationDetector.java @@ -19,7 +19,9 @@ package com.android.dialer.assisteddialing; import android.annotation.TargetApi; import android.os.Build.VERSION_CODES; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.telephony.TelephonyManager; +import android.text.TextUtils; import com.android.dialer.common.LogUtil; import java.util.Locale; import java.util.Optional; @@ -32,12 +34,16 @@ import java.util.Optional; final class LocationDetector { private final TelephonyManager telephonyManager; + private final String userProvidedHomeCountry; - public LocationDetector(@NonNull TelephonyManager telephonyManager) { + public LocationDetector( + @NonNull TelephonyManager telephonyManager, @Nullable String userProvidedHomeCountry) { if (telephonyManager == null) { throw new NullPointerException("Provided TelephonyManager was null"); } + this.telephonyManager = telephonyManager; + this.userProvidedHomeCountry = userProvidedHomeCountry; } // TODO(erfanian): confirm this is based on ISO 3166-1 alpha-2. libphonenumber expects Unicode's @@ -50,8 +56,16 @@ final class LocationDetector { @SuppressWarnings("AndroidApiChecker") // Use of optional @TargetApi(VERSION_CODES.N) public Optional getUpperCaseUserHomeCountry() { + + if (!TextUtils.isEmpty(userProvidedHomeCountry)) { + LogUtil.i( + "LocationDetector.getUpperCaseUserRoamingCountry", "user provided home country code"); + return Optional.of(userProvidedHomeCountry.toUpperCase(Locale.US)); + } + String simCountryIso = telephonyManager.getSimCountryIso(); if (simCountryIso != null) { + LogUtil.i("LocationDetector.getUpperCaseUserRoamingCountry", "using sim country iso"); return Optional.of(telephonyManager.getSimCountryIso().toUpperCase(Locale.US)); } LogUtil.i("LocationDetector.getUpperCaseUserHomeCountry", "user home country was null"); diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java index 8847448cd..a70844fbd 100644 --- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java +++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java @@ -16,7 +16,10 @@ package com.android.dialer.assisteddialing.ui; import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.Preference; import android.preference.PreferenceFragment; +import android.text.TextUtils; /** The setting for Assisted Dialing */ public class AssistedDialingSettingFragment extends PreferenceFragment { @@ -27,5 +30,20 @@ public class AssistedDialingSettingFragment extends PreferenceFragment { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.assisted_dialing_setting); + ListPreference countryChooserPref = + (ListPreference) + findPreference(getContext().getString(R.string.assisted_dialing_setting_cc_key)); + + if (!TextUtils.isEmpty(countryChooserPref.getEntry())) { + countryChooserPref.setSummary(countryChooserPref.getEntry()); + } + countryChooserPref.setOnPreferenceChangeListener(this::updateListSummary); + } + + boolean updateListSummary(Preference pref, Object newValue) { + ListPreference listPref = (ListPreference) pref; + CharSequence[] entries = listPref.getEntries(); + listPref.setSummary(entries[listPref.findIndexOfValue(newValue.toString())]); + return true; } } diff --git a/java/com/android/dialer/assisteddialing/ui/res/values/string.xml b/java/com/android/dialer/assisteddialing/ui/res/values/string.xml index cd159bfd5..3b40817ed 100644 --- a/java/com/android/dialer/assisteddialing/ui/res/values/string.xml +++ b/java/com/android/dialer/assisteddialing/ui/res/values/string.xml @@ -15,7 +15,7 @@ ~ limitations under the License --> - + Assisted dialing @@ -24,4 +24,511 @@ assisted_dialing_setting_toggle_key + + + assisted_dialing_setting_cc_key + + + Automatically detected + + + Home country + + + Default home country + + + + + + @string/assisted_dialing_setting_cc_default_summary + Afghanistan (+93) + Åland Islands (+358) + Albania (+355) + Algeria (+213) + American Samoa (+1) + Andorra (+376) + Angola (+244) + Anguilla (+1) + Antigua and Barbuda (+1) + Argentina (+54) + Armenia (+374) + Aruba (+297) + Australia (+61) + Austria (+43) + Azerbaijan (+994) + Bahamas (+1) + Bahrain (+973) + Bangladesh (+880) + Barbados (+1) + Belarus (+375) + Belgium (+32) + Belize (+501) + Benin (+229) + Bermuda (+1) + Bhutan (+975) + Bolivia (+591) + Caribbean Netherlands (+599) + Bosnia and Herzegovina (+387) + Botswana (+267) + Brazil (+55) + British Indian Ocean Territory (+246) + Brunei (+673) + Bulgaria (+359) + Burkina Faso (+226) + Burundi (+257) + Cabo Verde (+238) + Cambodia (+855) + Cameroon (+237) + Canada (+1) + Cayman Islands (+1) + Central African Republic (+236) + Chad (+235) + Chile (+56) + China (+86) + Christmas Island (+61) + Cocos (Keeling) Islands (+61) + Colombia (+57) + Comoros (+269) + Democratic Republic of the Congo (+243) + Congo (+242) + Cook Islands (+682) + Costa Rica (+506) + Côte d\'Ivoire (+225) + Croatia (+385) + Cuba (+53) + Curaçao (+599) + Cyprus (+357) + Czechia (+420) + Denmark (+45) + Djibouti (+253) + Dominica (+1) + Dominican Republic (+1) + Ecuador (+593) + Egypt (+20) + El Salvador (+503) + Equatorial Guinea (+240) + Eritrea (+291) + Estonia (+372) + Ethiopia (+251) + Falkland Islands (Islas Malvinas) (+500) + Faroe Islands (+298) + Fiji (+679) + Finland (+358) + France (+33) + French Guiana (+594) + French Polynesia (+689) + Gabon (+241) + Gambia (+220) + Georgia (+995) + Germany (+49) + Ghana (+233) + Gibraltar (+350) + Greece (+30) + Greenland (+299) + Grenada (+1) + Guadeloupe (+590) + Guam (+1) + Guatemala (+502) + Guernsey (+44) + Guinea (+224) + Guinea-Bissau (+245) + Guyana (+592) + Haiti (+509) + Holy See (+39) + Honduras (+504) + Hong Kong (+852) + Hungary (+36) + Iceland (+354) + India (+91) + Indonesia (+62) + Iran (+98) + Iraq (+964) + Ireland (+353) + Isle of Man (+44) + Israel (+972) + Italy (+39) + Jamaica (+1) + Japan (+81) + Jersey (+44) + Jordan (+962) + Kazakhstan (+7) + Kenya (+254) + Kiribati (+686) + North Korea (+850) + South Korea (+82) + Kuwait (+965) + Kyrgyzstan (+996) + Laos (+856) + Latvia (+371) + Lebanon (+961) + Lesotho (+266) + Liberia (+231) + Libya (+218) + Liechtenstein (+423) + Lithuania (+370) + Luxembourg (+352) + Macao (+853) + Macedonia (FYROM) (+389) + Madagascar (+261) + Malawi (+265) + Malaysia (+60) + Maldives (+960) + Mali (+223) + Malta (+356) + Marshall Islands (+692) + Martinique (+596) + Mauritania (+222) + Mauritius (+230) + Mayotte (+262) + Mexico (+52) + Micronesia (+691) + Moldova (+373) + Monaco (+377) + Mongolia (+976) + Montenegro (+382) + Montserrat (+1) + Morocco (+212) + Mozambique (+258) + Myanmar (+95) + Namibia (+264) + Nauru (+674) + Nepal (+977) + Netherlands (+31) + New Caledonia (+687) + New Zealand (+64) + Nicaragua (+505) + Niger (+227) + Nigeria (+234) + Niue (+683) + Norfolk Island (+672) + Northern Mariana Islands (+1) + Norway (+47) + Oman (+968) + Pakistan (+92) + Palau (+680) + Palestine (+970) + Panama (+507) + Papua New Guinea (+675) + Paraguay (+595) + Peru (+51) + Philippines (+63) + Poland (+48) + Portugal (+351) + Puerto Rico (+1) + Qatar (+974) + Réunion (+262) + Romania (+40) + Russian (+7) + Rwanda (+250) + St. Barthélemy (+590) + St. Helena (+290) + St. Kitts and Nevis (+1) + St. Lucia (+1) + St. Martin (+590) + St. Pierre and Miquelon (+508) + St. Vincent and the Grenadines (+1) + Samoa (+685) + San Marino (+378) + Sao Tome and Principe (+239) + Saudi Arabia (+966) + Senegal (+221) + Serbia (+381) + Seychelles (+248) + Sierra Leone (+232) + Singapore (+65) + Sint Maarten (+1) + Slovakia (+421) + Slovenia (+386) + Solomon Islands (+677) + Somalia (+252) + South Africa (+27) + South Sudan (+211) + Spain (+34) + Sri Lanka (+94) + Sudan (+249) + Suriname (+597) + Svalbard and Jan Mayen (+47) + Swaziland (+268) + Sweden (+46) + Switzerland (+41) + Syria (+963) + Taiwan (+886) + Tajikistan (+992) + Tanzania (+255) + Thailand (+66) + Timor-Leste (+670) + Togo (+228) + Tokelau (+690) + Tonga (+676) + Trinidad and Tobago (+1) + Tunisia (+216) + Turkey (+90) + Turkmenistan (+993) + Turks and Caicos Islands (+1) + Tuvalu (+688) + Uganda (+256) + Ukraine (+380) + United Arab Emirates (+971) + United Kingdom (+44) + United States (+1) + Uruguay (+598) + Uzbekistan (+998) + Vanuatu (+678) + Venezuela (+58) + Viet Nam (+84) + Virgin Islands (British) (+1) + Virgin Islands (U.S.) (+1) + Wallis and Futuna (+681) + Western Sahara (+212) + Yemen (+967) + Zambia (+260) + Zimbabwe (+263) + + + + AF + AX + AL + DZ + AS + AD + AO + AI + AG + AR + AM + AW + AU + AT + AZ + BS + BH + BD + BB + BY + BE + BZ + BJ + BM + BT + BO + BQ + BA + BW + BR + IO + BN + BG + BF + BI + CV + KH + CM + CA + KY + CF + TD + CL + CN + CX + CC + CO + KM + CD + CG + CK + CR + CI + HR + CU + CW + CY + CZ + DK + DJ + DM + DO + EC + EG + SV + GQ + ER + EE + ET + FK + FO + FJ + FI + FR + GF + PF + GA + GM + GE + DE + GH + GI + GR + GL + GD + GP + GU + GT + GG + GN + GW + GY + HT + VA + HN + HK + HU + IS + IN + ID + IR + IQ + IE + IM + IL + IT + JM + JP + JE + JO + KZ + KE + KI + KP + KR + KW + KG + LA + LV + LB + LS + LR + LY + LI + LT + LU + MO + MK + MG + MW + MY + MV + ML + MT + MH + MQ + MR + MU + YT + MX + FM + MD + MC + MN + ME + MS + MA + MZ + MM + NA + NR + NP + NL + NC + NZ + NI + NE + NG + NU + NF + MP + NO + OM + PK + PW + PS + PA + PG + PY + PE + PH + PL + PT + PR + QA + RE + RO + RU + RW + BL + SH + KN + LC + MF + PM + VC + WS + SM + ST + SA + SN + RS + SC + SL + SG + SX + SK + SI + SB + SO + ZA + SS + ES + LK + SD + SR + SJ + SZ + SE + CH + SY + TW + TJ + TZ + TH + TL + TG + TK + TO + TT + TN + TR + TM + TC + TV + UG + UA + AE + GB + US + UY + UZ + VU + VE + VN + VG + VI + WF + EH + YE + ZM + ZW + \ No newline at end of file diff --git a/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml b/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml index 806edfcf9..c1706b2ed 100644 --- a/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml +++ b/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml @@ -17,10 +17,22 @@ - + + + + + -- cgit v1.2.3