try to guess inital location in ShareLocation based on sim card
This commit is contained in:
		
							parent
							
								
									ae9bfe1643
								
							
						
					
					
						commit
						8f27a177b0
					
				| @ -173,7 +173,6 @@ public final class Config { | |||||||
| 	public static final class Map { | 	public static final class Map { | ||||||
| 		public final static double INITIAL_ZOOM_LEVEL = 4; | 		public final static double INITIAL_ZOOM_LEVEL = 4; | ||||||
| 		public final static double FINAL_ZOOM_LEVEL = 15; | 		public final static double FINAL_ZOOM_LEVEL = 15; | ||||||
| 		public final static GeoPoint INITIAL_POS = new GeoPoint(33.805278, -84.171389); |  | ||||||
| 		public final static int MY_LOCATION_INDICATOR_SIZE = 10; | 		public final static int MY_LOCATION_INDICATOR_SIZE = 10; | ||||||
| 		public final static int MY_LOCATION_INDICATOR_OUTLINE_SIZE = 3; | 		public final static int MY_LOCATION_INDICATOR_OUTLINE_SIZE = 3; | ||||||
| 		public final static long LOCATION_FIX_TIME_DELTA = 1000 * 10; // ms | 		public final static long LOCATION_FIX_TIME_DELTA = 1000 * 10; // ms | ||||||
|  | |||||||
| @ -54,7 +54,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	boolean isVideoMessage() { | 	boolean isVideoMessage() { | ||||||
| 		return this.isVideoMessage; | 		return this.isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private void processAsFile() { | 	private void processAsFile() { | ||||||
| @ -160,7 +160,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod | |||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void run() { | 	public void run() { | ||||||
| 		if (isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { | 		if (this.isVideoMessage()) { | ||||||
| 			try { | 			try { | ||||||
| 				processAsVideo(); | 				processAsVideo(); | ||||||
| 			} catch (FileNotFoundException e) { | 			} catch (FileNotFoundException e) { | ||||||
|  | |||||||
| @ -39,6 +39,7 @@ import eu.siacs.conversations.services.QuickConversationsService; | |||||||
| import eu.siacs.conversations.ui.util.LocationHelper; | import eu.siacs.conversations.ui.util.LocationHelper; | ||||||
| import eu.siacs.conversations.ui.widget.Marker; | import eu.siacs.conversations.ui.widget.Marker; | ||||||
| import eu.siacs.conversations.ui.widget.MyLocation; | import eu.siacs.conversations.ui.widget.MyLocation; | ||||||
|  | import eu.siacs.conversations.utils.LocationProvider; | ||||||
| import eu.siacs.conversations.utils.ThemeHelper; | import eu.siacs.conversations.utils.ThemeHelper; | ||||||
| 
 | 
 | ||||||
| public abstract class LocationActivity extends ActionBarActivity implements LocationListener { | public abstract class LocationActivity extends ActionBarActivity implements LocationListener { | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ import eu.siacs.conversations.databinding.ActivityShareLocationBinding; | |||||||
| import eu.siacs.conversations.ui.util.LocationHelper; | import eu.siacs.conversations.ui.util.LocationHelper; | ||||||
| import eu.siacs.conversations.ui.widget.Marker; | import eu.siacs.conversations.ui.widget.Marker; | ||||||
| import eu.siacs.conversations.ui.widget.MyLocation; | import eu.siacs.conversations.ui.widget.MyLocation; | ||||||
|  | import eu.siacs.conversations.utils.LocationProvider; | ||||||
| import eu.siacs.conversations.utils.ThemeHelper; | import eu.siacs.conversations.utils.ThemeHelper; | ||||||
| 
 | 
 | ||||||
| public class ShareLocationActivity extends LocationActivity implements LocationListener { | public class ShareLocationActivity extends LocationActivity implements LocationListener { | ||||||
| @ -55,7 +56,7 @@ public class ShareLocationActivity extends LocationActivity implements LocationL | |||||||
| 		this.binding = DataBindingUtil.setContentView(this,R.layout.activity_share_location); | 		this.binding = DataBindingUtil.setContentView(this,R.layout.activity_share_location); | ||||||
| 		setSupportActionBar((Toolbar) binding.toolbar); | 		setSupportActionBar((Toolbar) binding.toolbar); | ||||||
| 		configureActionBar(getSupportActionBar()); | 		configureActionBar(getSupportActionBar()); | ||||||
| 		setupMapView(binding.map, Config.Map.INITIAL_POS); | 		setupMapView(binding.map, LocationProvider.getGeoPoint(this)); | ||||||
| 
 | 
 | ||||||
| 		this.binding.cancelButton.setOnClickListener(view -> { | 		this.binding.cancelButton.setOnClickListener(view -> { | ||||||
| 			setResult(RESULT_CANCELED); | 			setResult(RESULT_CANCELED); | ||||||
|  | |||||||
| @ -30,11 +30,12 @@ import eu.siacs.conversations.ui.util.LocationHelper; | |||||||
| import eu.siacs.conversations.ui.util.UriHelper; | import eu.siacs.conversations.ui.util.UriHelper; | ||||||
| import eu.siacs.conversations.ui.widget.Marker; | import eu.siacs.conversations.ui.widget.Marker; | ||||||
| import eu.siacs.conversations.ui.widget.MyLocation; | import eu.siacs.conversations.ui.widget.MyLocation; | ||||||
|  | import eu.siacs.conversations.utils.LocationProvider; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| public class ShowLocationActivity extends LocationActivity implements LocationListener { | public class ShowLocationActivity extends LocationActivity implements LocationListener { | ||||||
| 
 | 
 | ||||||
| 	private GeoPoint loc = Config.Map.INITIAL_POS; | 	private GeoPoint loc = LocationProvider.FALLBACK; | ||||||
| 	private ActivityShowLocationBinding binding; | 	private ActivityShowLocationBinding binding; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,69 @@ | |||||||
|  | package eu.siacs.conversations.utils; | ||||||
|  | 
 | ||||||
|  | import android.content.Context; | ||||||
|  | import android.telephony.TelephonyManager; | ||||||
|  | import android.util.Log; | ||||||
|  | 
 | ||||||
|  | import org.osmdroid.util.GeoPoint; | ||||||
|  | 
 | ||||||
|  | import java.io.BufferedReader; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.io.InputStreamReader; | ||||||
|  | import java.util.Locale; | ||||||
|  | 
 | ||||||
|  | import eu.siacs.conversations.Config; | ||||||
|  | import eu.siacs.conversations.R; | ||||||
|  | 
 | ||||||
|  | public class LocationProvider { | ||||||
|  | 
 | ||||||
|  |     public static final GeoPoint FALLBACK = new GeoPoint(0.0,0.0); | ||||||
|  | 
 | ||||||
|  |     public static String getUserCountry(Context context) { | ||||||
|  |         try { | ||||||
|  |             final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); | ||||||
|  |             final String simCountry = tm.getSimCountryIso(); | ||||||
|  |             if (simCountry != null && simCountry.length() == 2) { // SIM country code is available | ||||||
|  |                 return simCountry.toUpperCase(Locale.US); | ||||||
|  |             } else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable) | ||||||
|  |                 String networkCountry = tm.getNetworkCountryIso(); | ||||||
|  |                 if (networkCountry != null && networkCountry.length() == 2) { // network country code is available | ||||||
|  |                     return networkCountry.toUpperCase(Locale.US); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             // fallthrough | ||||||
|  |         } | ||||||
|  |         Locale locale = Locale.getDefault(); | ||||||
|  |         return locale.getCountry(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static GeoPoint getGeoPoint(Context context) { | ||||||
|  |         return getGeoPoint(context, getUserCountry(context)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public static synchronized GeoPoint getGeoPoint(Context context, String country) { | ||||||
|  |         try { | ||||||
|  |             BufferedReader reader =  new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.countries))); | ||||||
|  |             String line; | ||||||
|  |             while((line = reader.readLine()) != null) { | ||||||
|  |                 String[] parts = line.split("\\s+",4); | ||||||
|  |                 if (parts.length == 4) { | ||||||
|  |                     if (country.equalsIgnoreCase(parts[0])) { | ||||||
|  |                         try { | ||||||
|  |                             return new GeoPoint(Double.parseDouble(parts[1]), Double.parseDouble(parts[2])); | ||||||
|  |                         } catch (NumberFormatException e) { | ||||||
|  |                             return FALLBACK; | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } else { | ||||||
|  |                     Log.d(Config.LOGTAG,"unable to parse line="+line); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } catch (IOException e) { | ||||||
|  |             Log.d(Config.LOGTAG,e.getMessage()); | ||||||
|  |         } | ||||||
|  |         return FALLBACK; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										245
									
								
								src/main/res/raw/countries
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										245
									
								
								src/main/res/raw/countries
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,245 @@ | |||||||
|  | AD 	42.546245 	1.601554 	Andorra | ||||||
|  | AE 	23.424076 	53.847818 	United Arab Emirates | ||||||
|  | AF 	33.93911 	67.709953 	Afghanistan | ||||||
|  | AG 	17.060816 	-61.796428 	Antigua and Barbuda | ||||||
|  | AI 	18.220554 	-63.068615 	Anguilla | ||||||
|  | AL 	41.153332 	20.168331 	Albania | ||||||
|  | AM 	40.069099 	45.038189 	Armenia | ||||||
|  | AN 	12.226079 	-69.060087 	Netherlands Antilles | ||||||
|  | AO 	-11.202692 	17.873887 	Angola | ||||||
|  | AQ 	-75.250973 	-0.071389 	Antarctica | ||||||
|  | AR 	-38.416097 	-63.616672 	Argentina | ||||||
|  | AS 	-14.270972 	-170.132217 	American Samoa | ||||||
|  | AT 	47.516231 	14.550072 	Austria | ||||||
|  | AU 	-25.274398 	133.775136 	Australia | ||||||
|  | AW 	12.52111 	-69.968338 	Aruba | ||||||
|  | AZ 	40.143105 	47.576927 	Azerbaijan | ||||||
|  | BA 	43.915886 	17.679076 	Bosnia and Herzegovina | ||||||
|  | BB 	13.193887 	-59.543198 	Barbados | ||||||
|  | BD 	23.684994 	90.356331 	Bangladesh | ||||||
|  | BE 	50.503887 	4.469936 	Belgium | ||||||
|  | BF 	12.238333 	-1.561593 	Burkina Faso | ||||||
|  | BG 	42.733883 	25.48583 	Bulgaria | ||||||
|  | BH 	25.930414 	50.637772 	Bahrain | ||||||
|  | BI 	-3.373056 	29.918886 	Burundi | ||||||
|  | BJ 	9.30769 	2.315834 	Benin | ||||||
|  | BM 	32.321384 	-64.75737 	Bermuda | ||||||
|  | BN 	4.535277 	114.727669 	Brunei | ||||||
|  | BO 	-16.290154 	-63.588653 	Bolivia | ||||||
|  | BR 	-14.235004 	-51.92528 	Brazil | ||||||
|  | BS 	25.03428 	-77.39628 	Bahamas | ||||||
|  | BT 	27.514162 	90.433601 	Bhutan | ||||||
|  | BV 	-54.423199 	3.413194 	Bouvet Island | ||||||
|  | BW 	-22.328474 	24.684866 	Botswana | ||||||
|  | BY 	53.709807 	27.953389 	Belarus | ||||||
|  | BZ 	17.189877 	-88.49765 	Belize | ||||||
|  | CA 	56.130366 	-106.346771 	Canada | ||||||
|  | CC 	-12.164165 	96.870956 	Cocos [Keeling] Islands | ||||||
|  | CD 	-4.038333 	21.758664 	Congo [DRC] | ||||||
|  | CF 	6.611111 	20.939444 	Central African Republic | ||||||
|  | CG 	-0.228021 	15.827659 	Congo [Republic] | ||||||
|  | CH 	46.818188 	8.227512 	Switzerland | ||||||
|  | CI 	7.539989 	-5.54708 	Côte d'Ivoire | ||||||
|  | CK 	-21.236736 	-159.777671 	Cook Islands | ||||||
|  | CL 	-35.675147 	-71.542969 	Chile | ||||||
|  | CM 	7.369722 	12.354722 	Cameroon | ||||||
|  | CN 	35.86166 	104.195397 	China | ||||||
|  | CO 	4.570868 	-74.297333 	Colombia | ||||||
|  | CR 	9.748917 	-83.753428 	Costa Rica | ||||||
|  | CU 	21.521757 	-77.781167 	Cuba | ||||||
|  | CV 	16.002082 	-24.013197 	Cape Verde | ||||||
|  | CX 	-10.447525 	105.690449 	Christmas Island | ||||||
|  | CY 	35.126413 	33.429859 	Cyprus | ||||||
|  | CZ 	49.817492 	15.472962 	Czech Republic | ||||||
|  | DE 	51.165691 	10.451526 	Germany | ||||||
|  | DJ 	11.825138 	42.590275 	Djibouti | ||||||
|  | DK 	56.26392 	9.501785 	Denmark | ||||||
|  | DM 	15.414999 	-61.370976 	Dominica | ||||||
|  | DO 	18.735693 	-70.162651 	Dominican Republic | ||||||
|  | DZ 	28.033886 	1.659626 	Algeria | ||||||
|  | EC 	-1.831239 	-78.183406 	Ecuador | ||||||
|  | EE 	58.595272 	25.013607 	Estonia | ||||||
|  | EG 	26.820553 	30.802498 	Egypt | ||||||
|  | EH 	24.215527 	-12.885834 	Western Sahara | ||||||
|  | ER 	15.179384 	39.782334 	Eritrea | ||||||
|  | ES 	40.463667 	-3.74922 	Spain | ||||||
|  | ET 	9.145 	40.489673 	Ethiopia | ||||||
|  | FI 	61.92411 	25.748151 	Finland | ||||||
|  | FJ 	-16.578193 	179.414413 	Fiji | ||||||
|  | FK 	-51.796253 	-59.523613 	Falkland Islands [Islas Malvinas] | ||||||
|  | FM 	7.425554 	150.550812 	Micronesia | ||||||
|  | FO 	61.892635 	-6.911806 	Faroe Islands | ||||||
|  | FR 	46.227638 	2.213749 	France | ||||||
|  | GA 	-0.803689 	11.609444 	Gabon | ||||||
|  | GB 	55.378051 	-3.435973 	United Kingdom | ||||||
|  | GD 	12.262776 	-61.604171 	Grenada | ||||||
|  | GE 	42.315407 	43.356892 	Georgia | ||||||
|  | GF 	3.933889 	-53.125782 	French Guiana | ||||||
|  | GG 	49.465691 	-2.585278 	Guernsey | ||||||
|  | GH 	7.946527 	-1.023194 	Ghana | ||||||
|  | GI 	36.137741 	-5.345374 	Gibraltar | ||||||
|  | GL 	71.706936 	-42.604303 	Greenland | ||||||
|  | GM 	13.443182 	-15.310139 	Gambia | ||||||
|  | GN 	9.945587 	-9.696645 	Guinea | ||||||
|  | GP 	16.995971 	-62.067641 	Guadeloupe | ||||||
|  | GQ 	1.650801 	10.267895 	Equatorial Guinea | ||||||
|  | GR 	39.074208 	21.824312 	Greece | ||||||
|  | GS 	-54.429579 	-36.587909 	South Georgia and the South Sandwich Islands | ||||||
|  | GT 	15.783471 	-90.230759 	Guatemala | ||||||
|  | GU 	13.444304 	144.793731 	Guam | ||||||
|  | GW 	11.803749 	-15.180413 	Guinea-Bissau | ||||||
|  | GY 	4.860416 	-58.93018 	Guyana | ||||||
|  | GZ 	31.354676 	34.308825 	Gaza Strip | ||||||
|  | HK 	22.396428 	114.109497 	Hong Kong | ||||||
|  | HM 	-53.08181 	73.504158 	Heard Island and McDonald Islands | ||||||
|  | HN 	15.199999 	-86.241905 	Honduras | ||||||
|  | HR 	45.1 	15.2 	Croatia | ||||||
|  | HT 	18.971187 	-72.285215 	Haiti | ||||||
|  | HU 	47.162494 	19.503304 	Hungary | ||||||
|  | ID 	-0.789275 	113.921327 	Indonesia | ||||||
|  | IE 	53.41291 	-8.24389 	Ireland | ||||||
|  | IL 	31.046051 	34.851612 	Israel | ||||||
|  | IM 	54.236107 	-4.548056 	Isle of Man | ||||||
|  | IN 	20.593684 	78.96288 	India | ||||||
|  | IO 	-6.343194 	71.876519 	British Indian Ocean Territory | ||||||
|  | IQ 	33.223191 	43.679291 	Iraq | ||||||
|  | IR 	32.427908 	53.688046 	Iran | ||||||
|  | IS 	64.963051 	-19.020835 	Iceland | ||||||
|  | IT 	41.87194 	12.56738 	Italy | ||||||
|  | JE 	49.214439 	-2.13125 	Jersey | ||||||
|  | JM 	18.109581 	-77.297508 	Jamaica | ||||||
|  | JO 	30.585164 	36.238414 	Jordan | ||||||
|  | JP 	36.204824 	138.252924 	Japan | ||||||
|  | KE 	-0.023559 	37.906193 	Kenya | ||||||
|  | KG 	41.20438 	74.766098 	Kyrgyzstan | ||||||
|  | KH 	12.565679 	104.990963 	Cambodia | ||||||
|  | KI 	-3.370417 	-168.734039 	Kiribati | ||||||
|  | KM 	-11.875001 	43.872219 	Comoros | ||||||
|  | KN 	17.357822 	-62.782998 	Saint Kitts and Nevis | ||||||
|  | KP 	40.339852 	127.510093 	North Korea | ||||||
|  | KR 	35.907757 	127.766922 	South Korea | ||||||
|  | KW 	29.31166 	47.481766 	Kuwait | ||||||
|  | KY 	19.513469 	-80.566956 	Cayman Islands | ||||||
|  | KZ 	48.019573 	66.923684 	Kazakhstan | ||||||
|  | LA 	19.85627 	102.495496 	Laos | ||||||
|  | LB 	33.854721 	35.862285 	Lebanon | ||||||
|  | LC 	13.909444 	-60.978893 	Saint Lucia | ||||||
|  | LI 	47.166 	9.555373 	Liechtenstein | ||||||
|  | LK 	7.873054 	80.771797 	Sri Lanka | ||||||
|  | LR 	6.428055 	-9.429499 	Liberia | ||||||
|  | LS 	-29.609988 	28.233608 	Lesotho | ||||||
|  | LT 	55.169438 	23.881275 	Lithuania | ||||||
|  | LU 	49.815273 	6.129583 	Luxembourg | ||||||
|  | LV 	56.879635 	24.603189 	Latvia | ||||||
|  | LY 	26.3351 	17.228331 	Libya | ||||||
|  | MA 	31.791702 	-7.09262 	Morocco | ||||||
|  | MC 	43.750298 	7.412841 	Monaco | ||||||
|  | MD 	47.411631 	28.369885 	Moldova | ||||||
|  | ME 	42.708678 	19.37439 	Montenegro | ||||||
|  | MG 	-18.766947 	46.869107 	Madagascar | ||||||
|  | MH 	7.131474 	171.184478 	Marshall Islands | ||||||
|  | MK 	41.608635 	21.745275 	Macedonia [FYROM] | ||||||
|  | ML 	17.570692 	-3.996166 	Mali | ||||||
|  | MM 	21.913965 	95.956223 	Myanmar [Burma] | ||||||
|  | MN 	46.862496 	103.846656 	Mongolia | ||||||
|  | MO 	22.198745 	113.543873 	Macau | ||||||
|  | MP 	17.33083 	145.38469 	Northern Mariana Islands | ||||||
|  | MQ 	14.641528 	-61.024174 	Martinique | ||||||
|  | MR 	21.00789 	-10.940835 	Mauritania | ||||||
|  | MS 	16.742498 	-62.187366 	Montserrat | ||||||
|  | MT 	35.937496 	14.375416 	Malta | ||||||
|  | MU 	-20.348404 	57.552152 	Mauritius | ||||||
|  | MV 	3.202778 	73.22068 	Maldives | ||||||
|  | MW 	-13.254308 	34.301525 	Malawi | ||||||
|  | MX 	23.634501 	-102.552784 	Mexico | ||||||
|  | MY 	4.210484 	101.975766 	Malaysia | ||||||
|  | MZ 	-18.665695 	35.529562 	Mozambique | ||||||
|  | NA 	-22.95764 	18.49041 	Namibia | ||||||
|  | NC 	-20.904305 	165.618042 	New Caledonia | ||||||
|  | NE 	17.607789 	8.081666 	Niger | ||||||
|  | NF 	-29.040835 	167.954712 	Norfolk Island | ||||||
|  | NG 	9.081999 	8.675277 	Nigeria | ||||||
|  | NI 	12.865416 	-85.207229 	Nicaragua | ||||||
|  | NL 	52.132633 	5.291266 	Netherlands | ||||||
|  | NO 	60.472024 	8.468946 	Norway | ||||||
|  | NP 	28.394857 	84.124008 	Nepal | ||||||
|  | NR 	-0.522778 	166.931503 	Nauru | ||||||
|  | NU 	-19.054445 	-169.867233 	Niue | ||||||
|  | NZ 	-40.900557 	174.885971 	New Zealand | ||||||
|  | OM 	21.512583 	55.923255 	Oman | ||||||
|  | PA 	8.537981 	-80.782127 	Panama | ||||||
|  | PE 	-9.189967 	-75.015152 	Peru | ||||||
|  | PF 	-17.679742 	-149.406843 	French Polynesia | ||||||
|  | PG 	-6.314993 	143.95555 	Papua New Guinea | ||||||
|  | PH 	12.879721 	121.774017 	Philippines | ||||||
|  | PK 	30.375321 	69.345116 	Pakistan | ||||||
|  | PL 	51.919438 	19.145136 	Poland | ||||||
|  | PM 	46.941936 	-56.27111 	Saint Pierre and Miquelon | ||||||
|  | PN 	-24.703615 	-127.439308 	Pitcairn Islands | ||||||
|  | PR 	18.220833 	-66.590149 	Puerto Rico | ||||||
|  | PS 	31.952162 	35.233154 	Palestinian Territories | ||||||
|  | PT 	39.399872 	-8.224454 	Portugal | ||||||
|  | PW 	7.51498 	134.58252 	Palau | ||||||
|  | PY 	-23.442503 	-58.443832 	Paraguay | ||||||
|  | QA 	25.354826 	51.183884 	Qatar | ||||||
|  | RE 	-21.115141 	55.536384 	Réunion | ||||||
|  | RO 	45.943161 	24.96676 	Romania | ||||||
|  | RS 	44.016521 	21.005859 	Serbia | ||||||
|  | RU 	61.52401 	105.318756 	Russia | ||||||
|  | RW 	-1.940278 	29.873888 	Rwanda | ||||||
|  | SA 	23.885942 	45.079162 	Saudi Arabia | ||||||
|  | SB 	-9.64571 	160.156194 	Solomon Islands | ||||||
|  | SC 	-4.679574 	55.491977 	Seychelles | ||||||
|  | SD 	12.862807 	30.217636 	Sudan | ||||||
|  | SE 	60.128161 	18.643501 	Sweden | ||||||
|  | SG 	1.352083 	103.819836 	Singapore | ||||||
|  | SH 	-24.143474 	-10.030696 	Saint Helena | ||||||
|  | SI 	46.151241 	14.995463 	Slovenia | ||||||
|  | SJ 	77.553604 	23.670272 	Svalbard and Jan Mayen | ||||||
|  | SK 	48.669026 	19.699024 	Slovakia | ||||||
|  | SL 	8.460555 	-11.779889 	Sierra Leone | ||||||
|  | SM 	43.94236 	12.457777 	San Marino | ||||||
|  | SN 	14.497401 	-14.452362 	Senegal | ||||||
|  | SO 	5.152149 	46.199616 	Somalia | ||||||
|  | SR 	3.919305 	-56.027783 	Suriname | ||||||
|  | ST 	0.18636 	6.613081 	São Tomé and Príncipe | ||||||
|  | SV 	13.794185 	-88.89653 	El Salvador | ||||||
|  | SY 	34.802075 	38.996815 	Syria | ||||||
|  | SZ 	-26.522503 	31.465866 	Swaziland | ||||||
|  | TC 	21.694025 	-71.797928 	Turks and Caicos Islands | ||||||
|  | TD 	15.454166 	18.732207 	Chad | ||||||
|  | TF 	-49.280366 	69.348557 	French Southern Territories | ||||||
|  | TG 	8.619543 	0.824782 	Togo | ||||||
|  | TH 	15.870032 	100.992541 	Thailand | ||||||
|  | TJ 	38.861034 	71.276093 	Tajikistan | ||||||
|  | TK 	-8.967363 	-171.855881 	Tokelau | ||||||
|  | TL 	-8.874217 	125.727539 	Timor-Leste | ||||||
|  | TM 	38.969719 	59.556278 	Turkmenistan | ||||||
|  | TN 	33.886917 	9.537499 	Tunisia | ||||||
|  | TO 	-21.178986 	-175.198242 	Tonga | ||||||
|  | TR 	38.963745 	35.243322 	Turkey | ||||||
|  | TT 	10.691803 	-61.222503 	Trinidad and Tobago | ||||||
|  | TV 	-7.109535 	177.64933 	Tuvalu | ||||||
|  | TW 	23.69781 	120.960515 	Taiwan | ||||||
|  | TZ 	-6.369028 	34.888822 	Tanzania | ||||||
|  | UA 	48.379433 	31.16558 	Ukraine | ||||||
|  | UG 	1.373333 	32.290275 	Uganda | ||||||
|  | UM 			U.S. Minor Outlying Islands | ||||||
|  | US 	37.09024 	-95.712891 	United States | ||||||
|  | UY 	-32.522779 	-55.765835 	Uruguay | ||||||
|  | UZ 	41.377491 	64.585262 	Uzbekistan | ||||||
|  | VA 	41.902916 	12.453389 	Vatican City | ||||||
|  | VC 	12.984305 	-61.287228 	Saint Vincent and the Grenadines | ||||||
|  | VE 	6.42375 	-66.58973 	Venezuela | ||||||
|  | VG 	18.420695 	-64.639968 	British Virgin Islands | ||||||
|  | VI 	18.335765 	-64.896335 	U.S. Virgin Islands | ||||||
|  | VN 	14.058324 	108.277199 	Vietnam | ||||||
|  | VU 	-15.376706 	166.959158 	Vanuatu | ||||||
|  | WF 	-13.768752 	-177.156097 	Wallis and Futuna | ||||||
|  | WS 	-13.759029 	-172.104629 	Samoa | ||||||
|  | XK 	42.602636 	20.902977 	Kosovo | ||||||
|  | YE 	15.552727 	48.516388 	Yemen | ||||||
|  | YT 	-12.8275 	45.166244 	Mayotte | ||||||
|  | ZA 	-30.559482 	22.937506 	South Africa | ||||||
|  | ZM 	-13.133897 	27.849332 	Zambia | ||||||
|  | ZW 	-19.015438 	29.154857 	Zimbabwe | ||||||
| @ -22,25 +22,6 @@ public class PhoneNumberUtilWrapper { | |||||||
|         return locale.getDisplayCountry(); |         return locale.getDisplayCountry(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static String getUserCountry(Context context) { |  | ||||||
|         try { |  | ||||||
|             final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); |  | ||||||
|             final String simCountry = tm.getSimCountryIso(); |  | ||||||
|             if (simCountry != null && simCountry.length() == 2) { // SIM country code is available |  | ||||||
|                 return simCountry.toUpperCase(Locale.US); |  | ||||||
|             } else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable) |  | ||||||
|                 String networkCountry = tm.getNetworkCountryIso(); |  | ||||||
|                 if (networkCountry != null && networkCountry.length() == 2) { // network country code is available |  | ||||||
|                     return networkCountry.toUpperCase(Locale.US); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } catch (Exception e) { |  | ||||||
|             // fallthrough |  | ||||||
|         } |  | ||||||
|         Locale locale = Locale.getDefault(); |  | ||||||
|         return locale.getCountry(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public static String toFormattedPhoneNumber(Context context, Jid jid) { |     public static String toFormattedPhoneNumber(Context context, Jid jid) { | ||||||
|         try { |         try { | ||||||
|             return getInstance(context).format(toPhoneNumber(context, jid), PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL); |             return getInstance(context).format(toPhoneNumber(context, jid), PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL); | ||||||
| @ -54,7 +35,7 @@ public class PhoneNumberUtilWrapper { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static String normalize(Context context, String input) throws IllegalArgumentException, NumberParseException { |     public static String normalize(Context context, String input) throws IllegalArgumentException, NumberParseException { | ||||||
|         final Phonenumber.PhoneNumber number = getInstance(context).parse(input, getUserCountry(context)); |         final Phonenumber.PhoneNumber number = getInstance(context).parse(input, LocationProvider.getUserCountry(context)); | ||||||
|         if (!getInstance(context).isValidNumber(number)) { |         if (!getInstance(context).isValidNumber(number)) { | ||||||
|             throw new IllegalArgumentException("Not a valid phone number"); |             throw new IllegalArgumentException("Not a valid phone number"); | ||||||
|         } |         } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch