2015-03-03 140 views
0

在我的應用程序中,我想從聯繫人中獲取聯繫人號碼並將其打印在編輯文本中。我從谷歌寫了代碼。但它不起作用。如何從android中的聯繫人獲取聯繫人號碼?

的java:

private void browseContacts() { 
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, 
      Uri.parse("content://contacts")); 
    pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only 
    // contacts w/ phone 
    // numbers 
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request it is that we're responding to 
    Log.v("TAG_CONTACTNAME",""+POSTPAID_SERVICETYPEID); 
    if (requestCode == PICK_CONTACT_REQUEST) { 
     // Make sure the request was successful 
     if (resultCode == getActivity().RESULT_OK) { 
      Cursor cursor = null; 
      try { 
       cursor = getActivity().getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); 

       int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER); 

       cursor.moveToFirst(); 
       do { 

        String phoneNumber = cursor.getString(phoneNumberIdx); 
        Log.v("TAG_CONTACTNAME",""+phoneNumber); 
        } while (cursor.moveToNext()); } 
        catch (Exception e) { e.printStackTrace(); 
        } finally { 

         if (cursor != null) { cursor.close(); 
         } } 

     } 


    } 

} 

請幫我

+0

我寫清單文件中的許可權 – 2015-03-03 08:44:28

+0

您是否正在獲取有什麼錯誤? – Fahim 2015-03-03 08:51:04

+0

沒有fahim ...我沒有從接觸屏幕獲得號碼。 onActivtyresult沒有錯誤 – 2015-03-03 08:52:20

回答

0

使用這onActivityResult

Cursor cursor = null; 
     try { 
      cursor = context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); 
      int contactIdIdx = cursor.getColumnIndex(Phone._ID); 
      int nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME); 
      int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER); 
      int photoIdIdx = cursor.getColumnIndex(Phone.PHOTO_ID); 
      cursor.moveToFirst(); 
      do { 
       String idContact = cursor.getString(contactIdIdx); String name = cursor.getString(nameIdx); 
       String phoneNumber = cursor.getString(phoneNumberIdx); 
       //... 
      } while (cursor.moveToNext()); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 

      if (cursor != null) { 
       cursor.close(); 
      } 
     } 

,也該在你的清單,

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

? – 2015-03-03 08:58:06

+0

是在onActivityResult – Fahim 2015-03-03 09:00:48

+0

哪裏我while循環? – 2015-03-03 09:03:03

0

轉到此鏈接查看所有代碼st逐步讓所有的聯繫人列表中任何你需要它像如號碼,電子郵件,筆記等EP ...

http://www.coderzheaven.com/2011/06/13/get-all-details-from-contacts-in-android/

這種方法把你的onCreate方法,

public void readContacts(){ 
    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 

    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
       System.out.println("name : " + name + ", ID : " + id); 

       // get the phone number 
       Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
             ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
             new String[]{id}, null); 
       while (pCur.moveToNext()) { 
         String phone = pCur.getString(
          pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         System.out.println("phone" + phone); 
       } 
       pCur.close(); 


       // get email and type 

       Cursor emailCur = cr.query(
         ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
         new String[]{id}, null); 
       while (emailCur.moveToNext()) { 
        // This would allow you get several email addresses 
         // if the email addresses were stored in an array 
        String email = emailCur.getString(
            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
        String emailType = emailCur.getString(
            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 

        System.out.println("Email " + email + " Email Type : " + emailType); 
       } 
       emailCur.close(); 

       // Get note....... 
       String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
       String[] noteWhereParams = new String[]{id, 
       ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE}; 
         Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null); 
       if (noteCur.moveToFirst()) { 
        String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE)); 
        System.out.println("Note " + note); 
       } 
       noteCur.close(); 

       //Get Postal Address.... 

       String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
       String[] addrWhereParams = new String[]{id, 
        ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE}; 
       Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI, 
          null, null, null, null); 
       while(addrCur.moveToNext()) { 
        String poBox = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); 
        String street = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); 
        String city = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); 
        String state = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); 
        String postalCode = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); 
        String country = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); 
        String type = addrCur.getString(
           addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); 

        // Do something with these.... 

       } 
       addrCur.close(); 

       // Get Instant Messenger......... 
       String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
       String[] imWhereParams = new String[]{id, 
        ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}; 
       Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI, 
         null, imWhere, imWhereParams, null); 
       if (imCur.moveToFirst()) { 
        String imName = imCur.getString(
          imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); 
        String imType; 
        imType = imCur.getString(
          imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE)); 
       } 
       imCur.close(); 

       // Get Organizations......... 

       String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
       String[] orgWhereParams = new String[]{id, 
        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE}; 
       Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI, 
          null, orgWhere, orgWhereParams, null); 
       if (orgCur.moveToFirst()) { 
        String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA)); 
        String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE)); 
       } 
       orgCur.close(); 
      } 
     } 
    } 
} 

我希望的解決方案你有。

最後一個非常重要的許可在清單XML文件中添加

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

添加代碼到答案。如果鏈接失效,答案變得無效 – Fahim 2015-03-03 09:16:36

+0

好吧,這段代碼試試吧,我希望你能得到解決方案 – 2015-03-03 09:37:02

+0

這個方法代碼放在你的java文件中並運行它,我希望所有聯繫人都能得到和解決方案。 – 2015-03-04 06:09:23

2

只是調用這個方法(GetAllContacts)

public void GetAllContacts(){ 
    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 

    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

       Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
             ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
             new String[]{id}, null); 
       while (pCur.moveToNext()) { 
         String phone = pCur.getString(
          pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         contactsNumber.add(phone); 
         Log.d("Number is", phone); 
       } 
       pCur.close();  
      } 
     } 
    } 
} 

而且在menifest添加此

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
相關問題