2011-05-31 4 views
1

J'essaie de mettre dans un edittext le numéro de téléphone qui a été sélectionné par l'utilisateur. J'ai un bouton: -Comment obtenir le numéro de téléphone?

contact.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_PICK, 
         Phone.CONTENT_URI); 
       startActivityForResult(intent, 0); 

      } 
     }); 

et la fonction ci-dessous:

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

     switch (reqCode) { 
     case 0: 
      if (resultCode == Activity.RESULT_OK) { 
       Cursor c = getContentResolver().query(Phone.CONTENT_URI, null, 
         null, null, null); 
       c.moveToFirst(); 
       String phone = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER)); 
       phone = phone.replace("-", ""); 
       Log.v("getting phone number", "Phone Number: " + phone); 
       txtPhoneNo.setText(phone); 

      } 
      break; 
     } 
    } 

et je suis le numéro de téléphone du dernier contact. Comment puis-je prendre le numéro de téléphone sélectionné?

Répondre

1

faire quelque chose comme:

if (resultCode == Activity.RESULT_OK) 
{ 
    Uri contactData = data.getData(); 
    ContentResolver cr = getContentResolver(); 
    Cursor curContact = managedQuery(contactData, null, null, null, null); 

    if ((curContact != null) && (curContact.moveToFirst())) 
    { 
    String id = curContact.getString(curContact 
     .getColumnIndexOrThrow(BaseColumns._ID)); 

    // check there's a phone number at all 
    if (Integer.parseInt(curContact.getString(curContact 
     .getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
    { 

     // get the phone number 
     Cursor curNumbers = cr.query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
      new String[] { id }, null); 

     if ((curNumbers != null) && curNumbers.moveToFirst()) 
     { 
     String strNumber = 
      curNumbers.getString(
      curNumbers.getColumnIndexOrThrow(
      ContactsContract.CommonDataKinds.Phone.NUMBER))); 

     curNumbers.close(); 
     } 
    } 
    curContact.close(); 
    } 
+0

Je reçois Force Close et LogCat J'ai ce message: 5 au 31 octobre: ​​26: 19,680: ERREUR/AndroidRuntime (4036): Causé par: java.lang.IllegalArgumentException: la colonne 'has_phone_number' n'existe pas – Gaby

+0

J'ai trouvé le problème. Merci. Cela fonctionne bien. – Gaby

0

Jetez un oeil à ce code!

btn_existing_contacts.setOnClickListener(new OnClickListener() { 
      public void onClick(View v){ 
       Intent intent_contacts = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); 
       /*contacts.setAction(android.content.Intent.ACTION_VIEW); 
       contacts.setData(People.CONTENT_URI);*/ 
       startActivityForResult(intent_contacts, 0); 
       //displayContacts(); 


      } 
     }); 

après le retour de l'écran des contacts,

@Override 
protected void onActivityResult(int requestCode, int resultCode,Intent data) 
{ 
super.onActivityResult(requestCode, resultCode, data); 
String name,mailid,id; 
switch(requestCode) 
{ 
case 0: 
    { 
     if(resultCode == RESULT_OK) 
     { 
      Uri contactdata = data.getData(); 

      Cursor cur = managedQuery(contactdata, null, null, null, null); 


      if(cur.moveToFirst()) 
      { 
       id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       Cursor emailCur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",new String[]{id}, null); 
       emailCur.moveToFirst(); 
       String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 


       name = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
       //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       //mailid = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Email._ID)); 
       //Toast.makeText(context_contact, "Name:"+name+"\nmailid:"+email, Toast.LENGTH_SHORT).show(); 
       Intent intent_add_invitees = new Intent(<ClassContext>,<ur classname>.class); 
       intent_add_invitees.putExtra("invitee_name", name); 
       intent_add_invitees.putExtra("invitee_mailid", email); 
       setResult(RESULT_OK, intent_add_invitees); 
       finish(); 

      } 
     } 

    } 



} 
} 
+0

De quelle classe est Send_invitations? – Gaby

Questions connexes