2017-08-03 8 views
1

enter image description hereComment supprimer le code de pays, quand choisir le numéro de téléphone des contacts

J'ai des doutes dans cette section. Comment supprimer le code du pays, lorsque je choisis le numéro de téléphone de la liste de contacts?

Ex: +91 999999999 au lieu de 9999999999 ou +020 9696854549 au lieu de 9696854549 Quelqu'un peut-il connaître la réponse à ma question? s'il vous plaît donner une solution à ce problème

J'ai joint mon code et image ici.

 private void contactPicked(Intent data) { 
    Cursor cursor = null; 
    try { 
    String phoneNo = null ; 
    // getData() method will have the Content Uri of the selected contact 
    Uri uri = data.getData(); 
    //Query the content uri 
    cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    // column index of the phone number 
    int phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER 
    phoneNo = cursor.getString(phoneIndex); 
    String phoneNumber = phoneNo.replaceAll(" ",""); 
    mobile_et.setText(phoneNumber); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
} 
+0

@IntelliJAmiya Cela ne fonctionnera que pour les pays qui ont un code de pays avec trois chiffres. Les États-Unis ont 1, beaucoup de pays ont 2 ... –

+1

Il n'y a rien qui dit que tous les numéros de téléphone doivent avoir un code de pays (dans la liste de contacts). Mais, vous pouvez vérifier cela en cherchant "+" et ensuite enlever les chiffres après (jusqu'à la première case). –

+0

@PeterAbolins Indeed –

Répondre

1

utiliser cette fonction espère que cela va vous aider:

public String phoeNumberWithOutCountryCode(String phoneNumberWithCountryCode) { 
     Pattern complie = Pattern.compile(" "); 
     String[] phonenUmber = complie.split(phoneNumberWithCountryCode); 
     Log.e("number is", phonenUmber[1]); 
     return phonenUmber[1]; 
    } 
+0

si vous obtenez votre solution s'il vous plaît upvote ma réponse –

2

Mon anglais est pauvre, mais je ferai de mon mieux pour répondre à votre question.

Tout d'abord, ajoutez cette ligne à votre build.gradle

compile 'com.googlecode.libphonenumber:libphonenumber:8.7.0' 

Et ci-dessous est une écriture de l'échantillon par Kotlin

fun deleteCountry(phone: String) : String{ 
    val phoneInstance = PhoneNumberUtil.getInstance() 
    try { 
     val phoneNumber = phoneInstance.parse(phone, null) 
     return phoneNumber?.nationalNumber?.toString()?:phone 
    }catch (_ : Exception) { 
    } 
    return phone 
} 

Si le numéro de téléphone ne démarre pas avec un '+' suivi par le code d'appel du pays, puis vous devez transmettre des informations sur la région, par exemple:

val = phoneNumber phoneInstance.parse (téléphone, "CN")

2

Vous pouvez utiliser startsWith()

Cette méthode a deux variantes et des tests si une chaîne commence par le préfixe spécifié commençant un index spécifié ou par défaut au début .

if(phoneNumber.startsWith("+")) 
{ 
    if(phoneNumber.length()==13) 
    { 
    String str_getMOBILE=phoneNumber.substring(3); 
    mobile_et.setText(str_getMOBILE); 
    } 
    else if(phoneNumber.length()==14) 
    { 
    String str_getMOBILE=phoneNumber.substring(4); 
    mobile_et.setText(str_getMOBILE); 
    } 


} 
else 
{ 
mobile_et.setText(phoneNumber); 
} 
+1

Merci. Mais votre solution donne à supprimer les 4 premiers chiffres. J'obtiens cette solution de votre réponse Ex: +917854129856 cela donnera 54129856. ce n'est pas la solution parfaite quand je demande. J'ai besoin d'obtenir 7854129845 – New

+2

Merci beaucoup. Cela fonctionne bien. – New

+1

@venkateshwari Content de vous aider. Aller de l'avant . –

1

Il fonctionnera pour tous les cas. Vous avez besoin de se soucient pas combien chiffres du code du pays est

String get_Mo = phoneNumber.substring(phoneNumber.lastIndexOf(' ')+1));