如何在Android中将国家/地区代码与电话号码分开?

时间:2014-11-20 15:20:49

标签: android

我有一份国家/地区代码的XML列表及其相应的国家/地区可供使用,但首先我需要将它们与电话号码分开。在Android API中有一种简单的方法吗?

4 个答案:

答案 0 :(得分:1)

Java String.substring()可能对此用例有用:

yourString.substring(int beginIndex, int endIndex);

您可能必须首先取出XML列表,对用户输入的前3个数字进行子串,然后将其与列表的条目进行比较。

答案 1 :(得分:1)

请结帐libphonenumber; https://code.google.com/p/libphonenumber/

这是Google常用的Java,C ++和Javascript库,用于解析,格式化,存储和验证国际电话号码。 Java版本针对在智能手机上运行进行了优化,自4.0版以来一直被Android框架使用(Ice Cream Sandwich)。

答案 2 :(得分:1)

我使用ridsatrio的答案时遇到了较早的问题here

我使用以下类从下面的字符串数组中获取国家/地区代码:

import android.widget.TextView;

/**
 * Created by Friso on 14/11/21.
 */
public final class PhoneFunctions {
    private static PhoneFunctions instance;

    private PhoneFunctions(){}

    public static PhoneFunctions getInstance() {
        if (instance == null) {
            instance = new PhoneFunctions();
        }

        return instance;
    }

    public String getCountry(String[] argStringArray, TextView argText){
        String country="";

        if (argText.getText().toString().length() >= 4){
            for(int i=0;i<argStringArray.length;i++){
                String[] g=argStringArray[i].split(",");
                if(g[0].equals(getFirstFourChar(argText))){
                    country=g[1];
                    break;
                }
                if (g[0].equals(getFirstThreeChar(argText))){
                    country=g[1];
                    break;
                }
                if (g[0].equals(getFirstTwoChar(argText))){
                    country=g[1];
                    break;
                }
            }
        }

        return country;
    }

    public String getFirstFourChar(TextView argText){
        String threeChar;
        String text = argText.getText().toString();
        threeChar = text.substring(0,4);

        return threeChar;
    }

    public String getFirstThreeChar(TextView argText){
        String twoChar;
        String text = argText.getText().toString();
        twoChar = text.substring(0,3);

        return twoChar;
    }

    public String getFirstTwoChar(TextView argText){
        String oneChar;
        String text = argText.getText().toString();
        oneChar = text.substring(0,2);

        return oneChar;
    }
}

国家/地区代码由1-3个数字组成,因为这个应用程序必须在电话号码的开头有+字符串,我认为只需在我要比较的字符串数组中添加一个+代码添加更多代码以分隔+。

<string-array name="CountryCodes" >
        <item>+93,AF</item>
        <item>+355,AL</item>
        <item>+213,DZ</item>
        <item>+376,AD</item>
        <item>+244,AO</item>
        <item>+672,AQ</item>
        <item>+54,AR</item>
        <item>+374,AM</item>
        <item>+297,AW</item>
        <item>+61,AU</item>
        <item>+43,AT</item>
        <item>+994,AZ</item>
        <item>+973,BH</item>
        <item>+880,BD</item>
        <item>+375,BY</item>
        <item>+32,BE</item>
        <item>+501,BZ</item>
        <item>+229,BJ</item>
        <item>+975,BT</item>
        <item>+591,BO</item>
        <item>+387,BA</item>
        <item>+267,BW</item>
        <item>+55,BR</item>
        <item>+673,BN</item>
        <item>+359,BG</item>
        <item>+226,BF</item>
        <item>+95,MM</item>
        <item>+257,BI</item>
        <item>+855,KH</item>
        <item>+237,CM</item>
        <item>+1,CA</item>
        <item>+238,CV</item>
        <item>+236,CF</item>
        <item>+235,TD</item>
        <item>+56,CL</item>
        <item>+86,CN</item>
        <item>+61,CX</item>
        <item>+61,CC</item>
        <item>+57,CO</item>
        <item>+269,KM</item>
        <item>+242,CG</item>
        <item>+243,CD</item>
        <item>+682,CK</item>
        <item>+506,CR</item>
        <item>+385,HR</item>
        <item>+53,CU</item>
        <item>+357,CY</item>
        <item>+420,CZ</item>
        <item>+45,DK</item>
        <item>+253,DJ</item>
        <item>+670,TL</item>
        <item>+593,EC</item>
        <item>+20,EG</item>
        <item>+503,SV</item>
        <item>+240,GQ</item>
        <item>+291,ER</item>
        <item>+372,EE</item>
        <item>+251,ET</item>
        <item>+500,FK</item>
        <item>+298,FO</item>
        <item>+679,FJ</item>
        <item>+358,FI</item>
        <item>+33,FR</item>
        <item>+689,PF</item>
        <item>+241,GA</item>
        <item>+220,GM</item>
        <item>+995,GE</item>
        <item>+49,DE</item>
        <item>+233,GH</item>
        <item>+350,GI</item>
        <item>+30,GR</item>
        <item>+299,GL</item>
        <item>+502,GT</item>
        <item>+224,GN</item>
        <item>+245,GW</item>
        <item>+592,GY</item>
        <item>+509,HT</item>
        <item>+504,HN</item>
        <item>+852,HK</item>
        <item>+36,HU</item>
        <item>+91,IN</item>
        <item>+62,ID</item>
        <item>+98,IR</item>
        <item>+964,IQ</item>
        <item>+353,IE</item>
        <item>+44,IM</item>
        <item>+972,IL</item>
        <item>+39,IT</item>
        <item>+225,CI</item>
        <item>+81,JP</item>
        <item>+962,JO</item>
        <item>+7,KZ</item>
        <item>+254,KE</item>
        <item>+686,KI</item>
        <item>+965,KW</item>
        <item>+996,KG</item>
        <item>+856,LA</item>
        <item>+371,LV</item>
        <item>+961,LB</item>
        <item>+266,LS</item>
        <item>+231,LR</item>
        <item>+218,LY</item>
        <item>+423,LI</item>
        <item>+370,LT</item>
        <item>+352,LU</item>
        <item>+853,MO</item>
        <item>+389,MK</item>
        <item>+261,MG</item>
        <item>+265,MW</item>
        <item>+60,MY</item>
        <item>+960,MV</item>
        <item>+223,ML</item>
        <item>+356,MT</item>
        <item>+692,MH</item>
        <item>+222,MR</item>
        <item>+230,MU</item>
        <item>+262,YT</item>
        <item>+52,MX</item>
        <item>+691,FM</item>
        <item>+373,MD</item>
        <item>+377,MC</item>
        <item>+976,MN</item>
        <item>+382,ME</item>
        <item>+212,MA</item>
        <item>+258,MZ</item>
        <item>+264,NA</item>
        <item>+674,NR</item>
        <item>+977,NP</item>
        <item>+31,NL</item>
        <item>+599,AN</item>
        <item>+687,NC</item>
        <item>+64,NZ</item>
        <item>+505,NI</item>
        <item>+227,NE</item>
        <item>+234,NG</item>
        <item>+683,NU</item>
        <item>+850,KP</item>
        <item>+47,NO</item>
        <item>+968,OM</item>
        <item>+92,PK</item>
        <item>+680,PW</item>
        <item>+507,PA</item>
        <item>+675,PG</item>
        <item>+595,PY</item>
        <item>+51,PE</item>
        <item>+63,PH</item>
        <item>+870,PN</item>
        <item>+48,PL</item>
        <item>+351,PT</item>
        <item>+1,PR</item>
        <item>+974,QA</item>
        <item>+40,RO</item>
        <item>+7,RU</item>
        <item>+250,RW</item>
        <item>+590,BL</item>
        <item>+685,WS</item>
        <item>+378,SM</item>
        <item>+239,ST</item>
        <item>+966,SA</item>
        <item>+221,SN</item>
        <item>+381,RS</item>
        <item>+248,SC</item>
        <item>+232,SL</item>
        <item>+65,SG</item>
        <item>+421,SK</item>
        <item>+386,SI</item>
        <item>+677,SB</item>
        <item>+252,SO</item>
        <item>+27,ZA</item>
        <item>+82,KR</item>
        <item>+34,ES</item>
        <item>+94,LK</item>
        <item>+290,SH</item>
        <item>+508,PM</item>
        <item>+249,SD</item>
        <item>+597,SR</item>
        <item>+268,SZ</item>
        <item>+46,SE</item>
        <item>+41,CH</item>
        <item>+963,SY</item>
        <item>+886,TW</item>
        <item>+992,TJ</item>
        <item>+255,TZ</item>
        <item>+66,TH</item>
        <item>+228,TG</item>
        <item>+690,TK</item>
        <item>+676,TO</item>
        <item>+216,TN</item>
        <item>+90,TR</item>
        <item>+993,TM</item>
        <item>+688,TV</item>
        <item>+971,AE</item>
        <item>+256,UG</item>
        <item>+44,GB</item>
        <item>+380,UA</item>
        <item>+598,UY</item>
        <item>+1,US</item>
        <item>+998,UZ</item>
        <item>+678,VU</item>
        <item>+39,VA</item>
        <item>+58,VE</item>
        <item>+84,VN</item>
        <item>+681,WF</item>
        <item>+967,YE</item>
        <item>+260,ZM</item>
        <item>+263,ZW</item>
    </string-array>

答案 3 :(得分:-1)

您可以通过检查以“ +”号开头的电话号码来区分手机号码,并且电话号码的长度应为10。

void splitMobilenumberMethod(){
    String phoneNumb = MOBILE_NUMBER_TO_SPLIT;
    String ext = "", phoneN = "";
    if (phoneNumb.startsWith("+") || phoneNumb.length() > 10) {
        ext=phoneNumb.substring(0, 3);
        phoneN=phoneNumb.substring(3);
     } else {
        ext = "";
        phoneN = phoneNumb;
     }
     showSelectedPhoneDialog(ext, phoneN);
}


void showSelectedPhoneDialog(String ext, String phone) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
    alertDialog.setTitle("Verify Phone Number");
    LinearLayout layout = new LinearLayout(context);
    layout.setOrientation(LinearLayout.HORIZONTAL);
    layout.setGravity(View.TEXT_ALIGNMENT_CENTER);
    final EditText extEdit = new EditText(context);
    final EditText phoneEdit = new EditText(context);
    extEdit.setHint("Country");
    phoneEdit.setHint("Mobile Number");
    layout.addView(extEdit);
    layout.addView(phoneEdit);
    extEdit.setText(ext);
    phoneEdit.setText(phone);
    alertDialog.setView(layout);

    alertDialog.setIcon(R.drawable.ic_message);
    alertDialog.setPositiveButton("Done", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // do if split is correct or after make it corrent manually by user
        }
    });
    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

            dialog.cancel();
        }
    });

    alertDialog.show();
}