我有一份国家/地区代码的XML列表及其相应的国家/地区可供使用,但首先我需要将它们与电话号码分开。在Android API中有一种简单的方法吗?
答案 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();
}