-2

I want to create an OTP code for my application, so how to create an country code for phone number validation. If you have solved problem like this, please share to me. thanks

Steve Vinoski
  • 19,847
  • 3
  • 31
  • 46
steven caesar
  • 85
  • 1
  • 9
  • OTP and country code are two different things what are you trying to say over here? – Akshay Katariya Apr 16 '18 at 03:49
  • Store the country codes along with country name in db. Get the country name for the device and from that country name, fetch the code from db which you can show. For getting country name please refer this link. https://stackoverflow.com/questions/11293642/how-can-i-get-my-android-device-country-code-without-using-gps – Sunil luitel Apr 16 '18 at 03:54
  • @AkshayKatariya i want to detect phone number region has been insert to my apps. so if the phone number is from other country except indonesia my apps will not send the OTP. because the OTP server cannot support send to phone number from outside indonesia – steven caesar Apr 17 '18 at 03:53
  • ok, will post an answer based on your comment, post some code for reference – Akshay Katariya Apr 17 '18 at 03:56

4 Answers4

3

Thank's for your answer all, i have found the solution for my problem, with using library 'com.hbb20:ccp:1.7.2'.

steven caesar
  • 85
  • 1
  • 9
2

Create a xml file having name country_codes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="country_code">
        <item>+93,</item>
        <item>+355,</item>
        <item>+213,</item>
        <item>+684,</item>
        <item>+376,</item>
        <item>+244,</item>
        <item>+1&#8211;264,</item>
        <item>+672,</item>
        <item>+1&#8211;268,</item>
        <item>+54,</item>
        <item>+374,</item>
        <item>+297,</item>
        <item>+61,</item>
        <item>+43,</item>
        <item>+994,</item>
        <item>+1&#8211;242,</item>
        <item>+973,</item>
        <item>+ 880,</item>
        <item>+1&#8211;246,</item>
        <item>+375,</item>
        <item>+32,</item>
        <item>+501,</item>
        <item>+229,</item>
        <item>+1&#8211;441,</item>
        <item>+975,</item>
        <item>+591,</item>
        <item>+387,</item>
        <item>+267,</item>
        <item>+55,</item>
        <item>+673,</item>
        <item>+359,</item>
        <item>+226,</item>
        <item>+257,</item>
        <item>+855,</item>
        <item>+237,</item>
        <item>+1,</item>
        <item>+238,</item>
        <item>+1&#8211;345,</item>
        <item>+236,</item>
        <item>+235,</item>
        <item>+56,</item>
        <item>+86,</item>
        <item>+61,</item>
        <item>+61,</item>
        <item>+57,</item>
        <item>+269,</item>
        <item>+242,</item>
        <item>+243,</item>
        <item>+682,</item>
        <item>+506,</item>
        <item>+385,</item>
        <item>+53,</item>
        <item>+357,</item>
        <item>+420,</item>
        <item>+45,</item>
        <item>+253,</item>
        <item>+1&#8211;767,</item>
        <item>+809,</item>
        <item>+593,</item>
        <item>+20,</item>
        <item>+503,</item>
        <item>+240,</item>
        <item>+291,</item>
        <item>+372,</item>
        <item>+251,</item>
        <item>+500,</item>
        <item>+298,</item>
        <item>+679,</item>
        <item>+358,</item>
        <item>+33,</item>
        <item>+594,</item>
        <item>+241,</item>
        <item>+220,</item>
        <item>+995,</item>
        <item>+49,</item>
        <item>+233,</item>
        <item>+350,</item>
        <item>+44,</item>
        <item>+30,</item>
        <item>+299,</item>
        <item>+1&#8211;473,</item>
        <item>+590,</item>
        <item>+1&#8211;671,</item>
        <item>+502,</item>
        <item>+224,</item>
        <item>+245,</item>
        <item>+592,</item>
        <item>+509,</item>
        <item>+504,</item>
        <item>+852,</item>
        <item>+36,</item>
        <item>+354,</item>
        <item>+91,</item>
        <item>+62,</item>
        <item>+98,</item>
        <item>+964,</item>
        <item>+353,</item>
        <item>+972,</item>
        <item>+39,</item>
        <item>+225,</item>
        <item>+1&#8211;876,</item>
        <item>+81,</item>
        <item>+962,</item>
        <item>+7,</item>
        <item>+254,</item>
        <item>+686,</item>
        <item>+850,</item>
        <item>+82,</item>
        <item>+965,</item>
        <item>+996,</item>
        <item>+856,</item>
        <item>+371,</item>
        <item>+961,</item>
        <item>+266,</item>
        <item>+231,</item>
        <item>+218,</item>
        <item>+423,</item>
        <item>+370,</item>
        <item>+352,</item>
        >
        <item>+853,</item>
        <item>+389,</item>
        <item>+261,</item>
        <item>+265,</item>
        <item>+60,</item>
        <item>+960,</item>
        <item>+223,</item>
        <item>+356,</item>
        <item>+692,</item>
        <item>+596,</item>
        <item>+222,</item>
        <item>+230,</item>
        <item>+269,</item>
        <item>+52,</item>
        <item>+691,</item>
        <item>+373,</item>
        <item>+377,</item>
        <item>+976,</item>
        <item>+382,</item>
        <item>+1&#8211;664,</item>
        <item>+212,</item>
        <item>+258,</item>
        <item>+95,</item>
        <item>+264,</item>
        <item>+674,</item>
        <item>+977,</item>
        <item>+31,</item>
        <item>+599,</item>
        <item>+687,</item>
        <item>+64,</item>
        <item>+505,</item>
        <item>+227,</item>
        <item>+234,</item>
        <item>+683,</item>
        <item>+672,</item>
        <item>+670,</item>
        <item>+47,</item>
        <item>+968,</item>
        <item>+92,</item>
        <item>+680,</item>
        <item>+507,</item>
        <item>+675,</item>
        <item>+595,</item>
        <item>+51,</item>
        <item>+63,</item>
        <item>+48,</item>
        <item>+689,</item>
        <item>+351,</item>
        <item>+1&#8211;787,</item>
        <item>+974,</item>
        <item>+262,</item>
        <item>+40,</item>
        <item>+7,</item>
        <item>+250,</item>
        <item>+290,</item>
        <item>+1&#8211;869,</item>
        <item>+1&#8211;758,</item>
        <item>+508,</item>
        <item>+1&#8211;784,</item>
        <item>+684,</item>
        <item>+378,</item>
        <item>+239,</item>
        <item>+966,</item>
        <item>+221,</item>
        <item>+381,</item>
        <item>+248,</item>
        <item>+232,</item>
        <item>+65,</item>
        <item>+421,</item>
        <item>+386,</item>
        <item>+677,</item>
        <item>+252,</item>
        <item>+27,</item>
        <item>+34,</item>
        <item>+94,</item>
        <item>+249,</item>
        <item>+597,</item>
        <item>+268,</item>
        <item>+46,</item>
        <item>+41,</item>
        <item>+963,</item>
        <item>+886,</item>
        <item>+992,</item>
        <item>+255,</item>
        <item>+66,</item>
        <item>+228,</item>
        <item>+690,</item>
        <item>+676,</item>
        <item>+1&#8211;868,</item>
        <item>+216,</item>
        <item>+90,</item>
        <item>+993,</item>
        <item>+1&#8211;649,</item>
        <item>+688,</item>
        <item>+44,</item>
        <item>+1,</item>
        <item>+256,</item>
        <item>+380,</item>
        <item>+971,</item>
        <item>+598,</item>
        <item>+998,</item>
        <item>+678,</item>
        <item>+39,</item>
        <item>+58,</item>
        <item>+84,</item>
        <item>+1&#8211;284,</item>
        <item>+1&#8211;340,</item>
        <item>+681,</item>
        <item>+967,</item>
        <item>+260,</item>
        <item>+263,</item>


    </string-array>
    <string-array name="country_name">
        <item>Afghanistan</item>
        <item>Albania</item>
        <item>Algeria</item>
        <item>American Samoa</item>
        <item>Andorra</item>
        <item>Angola</item>
        <item>Anguilla</item>
        <item>Antarctica</item>
        <item> Antigua and Barbuda</item>
        <item>Argentina</item>
        <item>Armenia</item>
        <item>Aruba</item>
        <item>Australia</item>
        <item>Austria</item>
        <item>Azerbaijan</item>
        <item>Bahamas</item>
        <item>Bahrain</item>
        <item>Bangladesh</item>
        <item>Barbados</item>
        <item>Belarus</item>
        <item>Belgium</item>
        <item>Belize</item>
        <item>Benin</item>
        <item>Bermuda</item>
        <item>Bhutan</item>
        <item>Bolivia</item>
        <item>Bosnia-Herzegovina</item>
        <item>Botswana</item>
        <item>Brazil</item>
        <item>Brunei Darussalam</item>
        <item>Bulgaria</item>
        <item>Burkina Faso</item>
        <item>Burundi</item>
        <item>Cambodia</item>
        <item>Cameroon</item>
        <item>Canada</item>
        <item>Cape Verde </item>
        <item>Cayman Islands</item>
        <item>Central African Republic</item>
        <item>Chad </item>
        <item>Chile </item>
        <item>China </item>
        <item>Christmas Island</item>
        <item>Cocos (Keeling) Islands</item>
        <item>Colombia </item>
        <item>Comoros </item>
        <item>Congo </item>
        <item>Congo, Dem. Republic </item>
        <item>Cook Islands</item>
        <item>Costa Rica </item>
        <item>Croatia</item>
        <item>Cuba </item>
        <item>Cyprus</item>
        <item>Czech </item>
        <item>Denmark </item>
        <item>Djibouti</item>
        <item>Dominica </item>
        <item>Dominican</item>
        <item>Ecuador </item>
        <item>Egypt </item>
        <item>El Salvador</item>
        <item>Equatorial</item>
        <item>Eritrea </item>
        <item>Estonia </item>
        <item>Ethiopia </item>
        <item>Falkland Islands (Malvinas)</item>
        <item>Faroe Islands</item>
        <item>Fiji</item>
        <item>Finland </item>
        <item>France </item>
        <item>French Guiana</item>
        <item>Gabon</item>
        <item>Gambia </item>
        <item>Georgia </item>
        <item>Germany </item>
        <item>Ghana </item>
        <item>Gibraltar </item>
        <item>Great Britain </item>
        <item>Greece </item>
        <item>Greenland</item>
        <item>Grenada </item>
        <item>Guadeloupe (French) </item>
        <item>Guam (USA)</item>
        <item>Guatemala </item>
        <item>Guinea </item>
        <item>Guinea Bissau </item>
        <item>Guyana </item>
        <item>Haiti </item>
        <item>Honduras </item>
        <item>Hong Kong </item>
        <item>Hungary </item>
        <item>Iceland </item>
        <item>India </item>
        <item>Indonesia </item>
        <item>Iran </item>
        <item>Iraq </item>
        <item>Ireland </item>
        <item>Israel </item>
        <item>Italy</item>
        <item>Ivory </item>
        <item>Jamaica </item>
        <item>Japan </item>
        <item>Jordan </item>
        <item>Kazakhstan </item>
        <item>Kenya </item>
        <item>Kiribati </item>
        <item>Korea-North</item>
        <item>Korea-South </item>
        <item>Kuwait </item>
        <item>Kyrgyzstan </item>
        <item>Laos </item>
        <item>Latvia </item>
        <item>Lebanon </item>
        <item>Lesotho </item>
        <item>Liberia </item>
        <item>Libya </item>
        <item>Liechtenstein </item>
        <item>Lithuania</item>
        <item>Luxembourg </item>
        <item>Macau</item>
        <item>Macedonia </item>
        <item>Madagascar </item>
        <item>Malawi </item>
        <item>Malaysia </item>
        <item>Maldives </item>
        <item>Mali </item>
        <item>Malta </item>
        <item>Marshall Islands </item>
        <item>Martinique (French) </item>
        <item>Mauritania </item>
        <item>Mauritius Port</item>
        <item>Mayotte </item>
        <item>Mexico </item>
        <item>Micronesia </item>
        <item>Moldova </item>
        <item>Monaco</item>
        <item>Mongolia</item>
        <item>Montenegro </item>
        <item>Montserrat </item>
        <item>Morocco</item>
        <item>Mozambique </item>
        <item>Myanmar</item>
        <item>Namibia </item>
        <item>Nauru </item>
        <item>Nepal </item>
        <item>Netherlands</item>
        <item>Netherlands Antilles</item>
        <item>New Caledonia (French)</item>
        <item>New Zealand </item>
        <item>Nicaragua </item>
        <item>Niger </item>
        <item>Nigeria </item>
        <item>Niue </item>
        <item>Norfolk Island </item>
        <item>Northern Mariana Islands </item>
        <item>Norway</item>
        <item>Oman </item>
        <item>Pakistan </item>
        <item>Palau </item>
        <item>Panama </item>
        <item>Papua New Guinea Port</item>
        <item>Paraguay </item>
        <item>Peru </item>
        <item>Philippines </item>
        <item>Poland</item>
        <item>Polynesia (French) </item>
        <item>Portugal </item>
        <item>Puerto Rico </item>
        <item>Qatar </item>
        <item>Reunion (French) </item>
        <item>Romania </item>
        <item>Russia </item>
        <item>Rwanda </item>
        <item>Saint Helena </item>
        <item>Saint Kitts &amp; Nevis Anguilla</item>
        <item>Saint Lucia </item>
        <item>Saint Pierre and Miquelon</item>
        <item>Saint Vincent &amp; Grenadines </item>
        <item>Samoa </item>
        <item>San Marino </item>
        <item>Sao Tome and Principe</item>
        <item>Saudi Arabia</item>
        <item>Senegal </item>
        <item>Serbia </item>
        <item>Seychelles </item>
        <item>Sierra Leone</item>
        <item>Singapore </item>
        <item>Slovakia </item>
        <item>Slovenia </item>
        <item>Solomon Islands</item>
        <item>Somalia</item>
        <item>South Africa </item>
        <item>Spain </item>
        <item>Sri Lanka </item>
        <item>Sudan</item>
        <item>Suriname</item>
        <item>Swaziland </item>
        <item>Sweden </item>
        <item>Switzerland</item>
        <item>Syria </item>
        <item>Taiwan </item>
        <item>Tajikistan</item>
        <item>Tanzania </item>
        <item>Thailand </item>
        <item>Togo </item>
        <item>Tokelau </item>
        <item>Tonga </item>
        <item>Trinidad and Tobago </item>
        <item>Tunisia </item>
        <item>Turkey </item>
        <item>Turkmenistan </item>
        <item>Turks and Caicos Islands</item>
        <item>Tuvalu </item>
        <item>U.K. </item>
        <item>USA </item>
        <item>Uganda </item>
        <item>Ukraine </item>
        <item>United Arab Emirates</item>
        <item>Uruguay </item>
        <item>Uzbekistan </item>
        <item>Vanuatu</item>
        <item>Vatican </item>
        <item>Venezuela</item>
        <item>Vietnam </item>
        <item>Virgin Islands (British) </item>
        <item>Virgin Islands (USA)</item>
        <item>Wallis and Futuna Islands</item>
        <item>Yemen</item>
        <item>Zambia </item>
        <item>Zimbabwe </item>

    </string-array>
</resources>

Add spinner in your activity's layout in front of your editext

  <Spinner
                    android:id="@+id/spinner"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/inner_img_xxxl"
                    android:dropDownWidth="220dp" />

set Adapter in activity to show all country codes along with name of countries.

   private void setDataToSpinner() {
        final ArrayList<String> countryCodeList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.country_code)));
        final ArrayList<String> countryNameList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.country_name)));

        ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countryCodeList) {

            @Override
            public View getDropDownView(int position, View convertView, ViewGroup parent) {
                View row = View.inflate(LoginActivity.this, R.layout.spinner_dropdown_view, null);
                TextView countrycodeTV = row.findViewById(R.id.countrycodeTV);
                TextView countrynameTV = row.findViewById(R.id.countrynameTV);

                countrycodeTV.setText(countryCodeList.get(position));
                countrynameTV.setText(countryNameList.get(position));

                AppController.getInstance().setTypefaceNeon(countrycodeTV);
                AppController.getInstance().setTypefaceNeon(countrynameTV);
                return row;
            }


            public View getView(int position, View convertView, ViewGroup parent) {
                View row = View.inflate(LoginActivity.this, R.layout.spinner_get_view, null);
                TextView countrycodeTV = row.findViewById(R.id.countrycodeTV);
                TextView countrynameTV = row.findViewById(R.id.countrynameTV);
                AppController.getInstance().setTypefaceNeon(countrycodeTV);
                AppController.getInstance().setTypefaceNeon(countrynameTV);
                countrycodeTV.setText(countryCodeList.get(position));
                countrynameTV.setText(countryNameList.get(position));
                return row;
            }
        };


        adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        binding.spinner.setAdapter(adp);}

create layout simple_spinner_item

<?xml version="1.0" encoding="utf-8"?>

    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@android:id/text1"
        style="?android:attr/spinnerItemStyle"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:textAlignment="inherit"/>

create layout spinner_get_view

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/countrycodeTV"
        style="?android:attr/spinnerItemStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:maxLines="1"
        android:textAlignment="inherit"
        android:textSize="@dimen/text_size_button_xs" />

    <TextView
        android:id="@+id/countrynameTV"
        style="?android:attr/spinnerItemStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_toEndOf="@+id/countrycodeTV"
        android:ellipsize="marquee"
        android:maxLines="1"
        android:textAlignment="inherit"
        android:textSize="@dimen/text_size_button_xs" />


</RelativeLayout>
Jyot
  • 540
  • 5
  • 17
0

Use TelephonyManager to create country code.

TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String countryCodeValue = tm.getNetworkCountryIso();
Fazal Hussain
  • 1,129
  • 12
  • 28
0

the library is "hbb20 country code picker". you can find it here Github link: https://github.com/hbb20/CountryCodePickerProject

nilesh14k
  • 58
  • 5