Sunday, November 17, 2013

Re: [android-developers] Selected a contact phone number

try this
---------
Cursor phones;
try {
            phones = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
                    null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC ");
          
while (phones.moveToNext()) {

                    String name = phones
                            .getString(phones
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
   
                    String phoneNumber = phones
                            .getString(phones
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
   
                    objContact = new ContactFields();
                    objContact.setName(name);
                    objContact.setPhoneNumber(phoneNumber);
                    list.add(objContact);
   
               

            }
           
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
                phones.close();
        }



On Sun, Nov 17, 2013 at 6:36 PM, Michael Banzon <michael@banzon.dk> wrote:
Hi all,

I am trying to get a contact with a phone number and so far I haven't found a reliable way to do this. I launch the standard activity for picking a contact using this snippet:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, REQUEST_CONTACT_NUMBER);

In my onActivityResult method I do this (from examples from SO etc.):

if (REQUEST_CONTACT_NUMBER == requestCode) {
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = getContentResolver().query(contactData, null, null, null, null);
if (c.moveToFirst()) {
String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getContentResolver().query( 
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, 
null, null);
if (phones.moveToFirst()) {
String number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
this.numberEditText.setText(number);
return;
}
}
}
}
Toast.makeText(this, "No number", Toast.LENGTH_SHORT).show();
}

The activity that launches show a lot more contacts than expected - every person is shown once per phone number or email eg. - many of the contacts is shown three to five times - and only one of these will result in an actual phone number being returned. Some contacts even return the email address!

If I launch the activity using this:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, REQUEST_CONTACT_NUMBER);

It seems that every contact is only shown once - and if chosen the contact picker prompts to select the correct part (phone, email, etc.) - but no matter what I select nothings actually gets returned - it always "toasts" the text "No number".

I just need a reliable and simple (to the user) way to pick a contact and get the phone number into the app - any help or reference for more information would be much appreciated ;-)

--
Michael Banzon
http://michaelbanzon.com/

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate