/* * Copyright (c) 2014-2015 Amberfog. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.amberfog.countryflagsdemo; import android.content.Context; import android.content.pm.PackageManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber; public class PhoneUtils { public static String getCountryRegionFromPhone(Context paramContext) { TelephonyManager service = null; int res = paramContext.checkCallingOrSelfPermission("android.permission.READ_PHONE_STATE"); if (res == PackageManager.PERMISSION_GRANTED) { service = (TelephonyManager) paramContext.getSystemService(Context.TELEPHONY_SERVICE); } String code = null; if (service != null) { String str = service.getLine1Number(); if (!TextUtils.isEmpty(str) && !str.matches("^0*$")) { code = parseNumber(str); } } if (code == null) { if (service != null) { code = service.getNetworkCountryIso(); } if (code == null) { code = paramContext.getResources().getConfiguration().locale.getCountry(); } } if (code != null) { return code.toUpperCase(); } return null; } private static String parseNumber(String paramString) { if (paramString == null) { return null; } PhoneNumberUtil numberUtil = PhoneNumberUtil.getInstance(); String result; try { Phonenumber.PhoneNumber localPhoneNumber = numberUtil.parse(paramString, null); result = numberUtil.getRegionCodeForNumber(localPhoneNumber); if (result == null) { return null; } } catch (NumberParseException localNumberParseException) { return null; } return result; } }