-2

Je suis en train d'obtenir le numéro de téléphone sous forme de chaîne dans Android, j'ai réussi à obtenir le contact et obtenir de lui le numéro de téléphone mais le résultat dans les journaux est data1 et le numéro est 32821 Je n'ai pas mon problème.Comment obtenir le numéro de téléphone de contact dans android

Voici mon code:

public void getContact(View view){ 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // for ActivityCompat#requestPermissions for more details. 

     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 10); 
//   return; 
    } 

    Intent contactsIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    this.pickContact = 1; 
    startActivityForResult(contactsIntent, this.pickContact); 
} 

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data){ 
    super.onActivityResult(reqCode, resultCode, data); 

    if(reqCode == this.pickContact){ 
     if (resultCode == Activity.RESULT_OK) { 
      Log.d("ContactsH", "ResOK"); 
      Uri contactData = data.getData(); 
      Cursor contact = getContentResolver().query(contactData, null, null, null, null); 

      if (contact.moveToFirst()) { 
//     String name = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       String phoneNumber = ContactsContract.CommonDataKinds.Phone.NUMBER; 
       // TODO Whatever you want to do with the selected contact name and phone number. 

       Log.d("ContactsH", "Calling to:"+phoneNumber); 
       contact.close(); 
       this.callByNumber(phoneNumber); 
      } 
     } 
    }else{ 
     Log.d("ContactsH", "Canceled"); 
    } 
} 

pouvez-vous me aider s'il vous plaît?

+4

double possible de [Comment obtenir le numéro de téléphone de contacts dans Android] (https://stackoverflow.com/questions/11218845/how-to-get-contacts -phone-number-in-android) –

+0

Est-ce que 'String name = contact.getString (contact.getColumnIndex (ContactsContract.Contacts.DISPLAY_NAME));' ne vous donne pas le nom? N'avez-vous pas essayé la même chose pour le numéro? –

+0

Je suis désolé mais cela ne fonctionne pas pour moi, car il montre le même nombre peu importe qui je choisis. –

Répondre

1

Merci pour @Levon Petrosyan

Mais j'ai juste besoin d'ajouter la partie de son link et la copier dans ma fonction.

C'est le code de travail:

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data){ 
    super.onActivityResult(reqCode, resultCode, data); 

    if(reqCode == this.pickContact){ 
     if (resultCode == Activity.RESULT_OK) { 
      Log.d("ContactsH", "ResOK"); 
      Uri contactData = data.getData(); 
      Cursor contact = getContentResolver().query(contactData, null, null, null, null); 

      if (contact.moveToFirst()) { 
       String name = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       // TODO Whatever you want to do with the selected contact's name. 

       ContentResolver cr = getContentResolver(); 
       Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
         "DISPLAY_NAME = '" + name + "'", null, null); 
       if (cursor.moveToFirst()) { 
        String contactId = 
          cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
        // 
        // Get all phone numbers. 
        // 
        Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); 
        while (phones.moveToNext()) { 
         String number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         int type = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
         switch (type) { 
          case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
           // do something with the Home number here... 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
           // do something with the Mobile number here... 
           Log.d("ContactsH", number); 
           this.callByNumber(number); 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
           // do something with the Work number here... 
           break; 
         } 
        } 
        phones.close(); 
       } 
       cursor.close(); 
      } 
     } 
    }else{ 
     Log.d("ContactsH", "Canceled"); 
    } 
}